有勇气的牛排博客

python操作Elasticsearch7.17.0

有勇气的牛排 247 Python 2023-05-18 20:59:11

文章目录

1 介绍

官方文档:
https://www.elastic.co/guide/en/enterprise-search-clients/python/7.17/index.html

pypi文档:
https://pypi.org/project/elasticsearch/7.17.0/

2 安装 连接

pip install elasticsearch==7.17.0

异步 async/await

pip install elasticsearch[async]==7.17.0
from elasticsearch import Elasticsearch client = Elasticsearch(hosts=['http://192.168.56.20:9200'], http_auth=("elastic", "密码"))

3 索引操作

3.1 创建索引

def create_index(index, doc, index_id): client.create(index=index, document=doc, id=index_id)
doc = { "mappings": { "properties": { "name": { "type": "text" }, "age": { "type": "long" }, "birthday": { "type": "date" } } } } create_index("test6", doc, "1")

3.2 判断索引是否存在

def index_id_exists(index, id): return client.exists(index=index, id=id)
if index_id_exists("test1", "2") == True: print("索引存在") else: print("索引不存在")

4 新增数据

def add_to_es(index, doc, id): # 重复添加,数据覆盖 try: client.index(index=index, document=doc, id=id) return '1' except Exception as e: print(e) return '0'
doc = { "name": "灰太狼", "age": 22, "birthday":"2000-02-02", "tags": ["男"] } res = add_to_es("test1", doc, "10")

5 删除数据

def delete_by_index_and_id(index, id): try: res = client.delete(index=index, id=id) print(res['_shards']['successful']) return '1' except Exception as e: print(e) return '0'
# 删除数据 if delete_by_index_and_id("test1", "1") == "1": print("删除成功") else: print("删除失败或不存在")

5 修改数据

def update_by_index_and_id(index, id, doc): try: client.update(index=index, id=id, doc=doc) return '1' except Exception as e: print(e) return '0'
doc = { "name": "有勇气的牛排", "age": 22, "birthday": "2000-05-20", "tags": ["男"] } res = update_by_index_and_id("test1", "1", doc=doc) if res == "1": print("更新成功") else: print("数据不存在")

6 查询数据

6.1 查询所有数据

查询 通过 索引->_id

def find_by_index_and_id(index, id): try: res = client.get(index=index, id=id) return res except Exception as e: print(e) return '0'
res = find_by_index_and_id("test1", "1") print(res)

查询所有数据

# 查询 索引index 所有数据 async def find_by_index_all(self, index): client = UtilES().es_connect() body = {} # item = ["uid", "ip"] try: # res = client.get(index=index, id=id) res = client.search(index=index, body=body, scroll='5m', size=1000) return res except Exception as e: print(e) return '0'

6.2 search数据

def find_search_article(index, key, source, highlight=None): """ :param index: 索引 source = ["a_title"] :param query: query :param source: 取出的字段 :param highlight: 高亮 :return: """ # should: 条件满足一个即可 query = {"bool": {"should": [{"match": {"a_title": key}}, {"match": {"a_content": key}}]}} # query = {"bool": {"should": [{"match": key}]}} client = connect_elk() try: res = client.search(index=index, query=query, _source=source, highlight=highlight) return res except Exception as e: print(e) return '0'
res = find_search_article("article", "人民教育", ["a_title","a_html"], highlight_red()) if res != 0: print(res["hits"]) total = res["hits"]["total"]["value"] res = res["hits"]["hits"]

参考文档:
https://www.cnblogs.com/lshan/p/15510018.html


留言

专栏
文章
加入群聊