一 python中集成es兩種方式
1 原生集成
# Official low-level client for Elasticsearch
### 等同於pymysql
#pip3 install elasticsearch
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()