如何在不确定查询大小的情况下从elasticsearch中获取索引中的所有文档,如
GET http://localhost:8090/my_index/_search?size=1000&scroll=1m&pretty=true'-d '{"size": 0,"query":{"query_string":{ "match_all" : {}}}}
由于
答案 0 :(得分:1)
根据ES scan query documentation,size
参数不仅仅是结果的数量:
size参数允许您配置最大命中数 与每批结果一起返回。每次调用滚动API 返回下一批结果,直到没有剩余结果 返回,即命中数组为空。
要检索所有结果,您需要以上述文档中描述的方式对API进行后续调用,或者使用一些现成的实现,如python中所示。这是一个在stdout上转储结果jsons的示例脚本:
import elasticsearch
from elasticsearch.helpers import scan
import json
es = elasticsearch.Elasticsearch('https://localhost:8090')
es_response = scan(
es,
index='my_index',
doc_type='my_doc_type',
query={"query": { "match_all" : {}}}
)
for item in es_response:
print(json.dumps(item))
答案 1 :(得分:0)
根据最新文档,您必须使用 search_after 参数从索引中检索超过 10,000 条记录。看看这里https://www.elastic.co/guide/en/elasticsearch/reference/current/paginate-search-results.html#search-after