gpt4 book ai didi

python-3.x - 使用match all query python从Elastic搜索索引中获取有限的数据

转载 作者:行者123 更新时间:2023-12-03 00:49:00 24 4
gpt4 key购买 nike

我正在编写一个python程序,以从 flex 搜索索引中获取数据。我想根据我指出的匹配查询获得最多25个数据。我想要前25个数据。我索引中的数据是10842。但是它从 flex 搜索的索引中检索所有数据。我从这里检查了解决方案matchall query for es,但是对我没有帮助。为我提供一些解决方案

这是代码:

from elasticsearch import Elasticsearch
import elasticsearch.helpers

count = 0
host = 'localhost'
ind = 'apps'
doc_typ = "change_apps"
limit_count = 25

def elasticsearch_import(host,ind,doc_typ,count,limit_count,port=9200,query={},single_line=False,single_line_label="message"):
data_count=count+limit_count
print("Data to be get from Elastic Search: ",data_count)
es = Elasticsearch()

results = elasticsearch.helpers.scan(es,
index=ind,
doc_type=doc_typ,
preserve_order=True,
query={"from":count,"size":data_count,"query": {"bool": {"must": [{"match_all": {}}],"must_not": [],"should": [] }},})
res=[]
for i in results:
res.append(i)
#print("res",res)
print("Data got from Elastic Search",len(res))

elasticsearch_import(host,ind,doc_typ,count,limit_count)

我得到的输出:
Data to be get from Elastic Search:  25
Data got from Elastic Search 10842

要求的输出:
Data to be get from Elastic Search:  25
Data got from Elastic Search 25

最佳答案

这就是scan方法的作用...它在后台使用了 scroll 方法,如果您查看api documentationsize实际上就是batch size

size – size (per shard) of the batch send at each iteration.

如果您只是想获得具有大小的结果,则 search 足够好,在这种情况下, size是结果大小,默认值为 10

关于python-3.x - 使用match all query python从Elastic搜索索引中获取有限的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56471559/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com