Python中集成es两种方式
1、原生集成
# https://github.com/elastic/elasticsearch-py # https://github.com/elastic/elasticsearch-dsl-py # Official low-level client for Elasticsearch ### 等同于pymysql pip3 install elasticsearch pip3 install elasticsearch-dsl from elasticsearch import Elasticsearch obj = Elasticsearch() # 得到一个对象 # 创建索引(Index) # result = obj.indices.create(index='user', body={"userid":'1','username':'lqz'},ignore=400) # print(result) # 删除索引 # result = obj.indices.delete(index='user', ignore=[400, 404]) # 插入数据 # data = {'userid': '1', 'username': 'lqz','password':'123'} # result = obj.create(index='news', doc_type='_doc', id=1, body=data) # print(result) # 更新数据 ''' 不用doc包裹会报错 ActionRequestValidationException[Validation Failed: 1: script or doc is missing ''' # data ={'doc':{'userid': '1', 'username': 'lqz','password':'123ee','test':'test'}} # result = obj.update(index='news', doc_type='_doc', body=data, id=1) # print(result) # 删除数据 # result = obj.delete(index='news', doc_type='_doc', id=1) # print(result) # 查询 # 查找所有文档 # query = {'query': {'match_all': {}}} # 查找名字叫做jack的所有文档 query = {'query': {'match': {'title': '十个'}}} # 查找年龄大于11的所有文档 # query = {'query': {'range': {'age': {'gt': 11}}}} allDoc = obj.search(index='books', doc_type='_doc', body=query) # print(allDoc) print(allDoc['hits']['hits'][0]['_source'])
2、dsl集成
# Elasticsearch DSL is a high-level # pip3 install elasticsearch-dsl from datetime import datetime from elasticsearch_dsl import Document, Date, Nested, Boolean,analyzer, InnerDoc, Completion, Keyword, Text,Integer from elasticsearch_dsl.connections import connections connections.create_connection(hosts=["localhost"]) class Article(Document): title = Text(analyzer='ik_max_word') author = Text() class Index: name = 'myindex' def save(self, ** kwargs): return super(Article, self).save(** kwargs) if __name__ == '__main__': # Article.init() # 创建索引 # 保存数据 # article = Article() # article.title = "测试测试阿斯顿发送到发斯蒂芬啊啊士大夫阿斯蒂芬" # article.author = "lqz" # article.save() # 数据就保存了 #查询数据 # s=Article.search() # s = s.filter('match', title="测试") # # results = s.execute() # 执行 # print(results[0].title) #删除数据 s = Article.search() s = s.filter('match', title="李清照").delete() #修改数据 # s = Article().search() # s = s.filter('match', title="测试") # results = s.execute() # print(results[0]) # results[0].title="李清照阿斯顿发送到发送阿斯蒂" # results[0].save()