读取ES中数据,并将数据写入到json中
from elasticsearch6 import Elasticsearch
import json
def elasic_data(classID,predn):
# 连接ES
ES = [
'xx.xx.xxx:9200'
]
es = Elasticsearch(ES, http_auth=('user', 'password'), sniff_on_start=True,
sniff_on_connection_fail=True, sniff_timeout=60)
# 查询语句
query = {
'query': {
'match': {
'classId': classID
}
}
}
filter_path = ['hits.hits._source.id']
result = es.search(index='index_name', doc_type='index_type', body=query, filter_path=filter_path, size=2000)
#result结构为:{'hits': {'hits': [{'_source': {'id': 6545575371252041}}, {'_source': {'id': 6545575371252035}}]}}
ids = result['hits']['hits']
idlist = []
for i in ids:
idlist.append(i['_source'])
print(idlist)
dnlist = []
for i in range(1, len(idlist)):
dn = predn + str(i)
di = {'dn': dn}
dis = dict(di, **idlist[i])
dnlist.append(dis)
with open('json路径, 'w') as f:
json.dump(dnlist, f)
if __name__ == "__main__":
elasic_data(xxxx, 'predn')