es查询方式
#!/usr/bin/env python
# -*- coding:utf-8 -*-
from elasticsearch import Elasticsearch
from elasticsearch5.helpers import scan
def do_scroll2(es, index, body):
try:
# raises an exception (ScanError) if an error is encountered (some shards fail to execute).
# 设置为False是为了考虑存在shard故障
return scan(client=es, query=body, index=index, scroll=u"10m", size=5000, request_timeout=180,
raise_on_error=False)
except Exception as e:
print("ERROR:",e)
return
class clusterModel:
# 初始化 连接es
def __init__(self,ai_index):
es_config = {
"hosts": [
"********:9200",
"*******:9200",
"******:9200"
],
"http_auth": ['nihao', 'helllo'],
}
self.es = Elasticsearch(**es_config)
self.ai_index = ai_index
def get_vector_from_es2(self, user_id):
print("AAAAAA")
"""
s_body = {
"query": {
"bool": {
"must": [
{
"term": {
"userId.keyword": {
"value": "JINSH***"
}
}
}
]
}
}
}
#简单查询方式:es.search
doc = self.es.search(index=self.ai_index, body=s_body, request_timeout=30)
print("BBBBBB",doc,len(doc["hits"]["hits"]))
for ele in doc["hits"]["hits"]:
print("CCCCC:",ele)
"""
s_body = {
"query": {
"bool": {
"must": [
{
"term": {
"userId.keyword": {
"value": "JINS*****"
}
}
}
]
}
}
}
#批量查询方式,:scan
item_set = do_scroll2(self.es, index=self.ai_index, body=s_body)
count = 0
for each_record in item_set:
source = each_record.get("_source")
print("source:",source)
user_id = source.get("userId")
print("user_id:",user_id)
count +=1
print("count = ",count)
if __name__ == '__main__':
ai_index = "**-22"
modelObject = clusterModel(ai_index)
userId = "*****"
print(userId,modelObject.ai_index)
modelObject.get_vector_from_es2(userId)