从索引中获取所有文档 - elasticsearch

时间:2017-06-19 08:08:49

标签: rest api elasticsearch

如何在不确定查询大小的情况下从elasticsearch中获取索引中的所有文档,如

GET http://localhost:8090/my_index/_search?size=1000&scroll=1m&pretty=true'-d '{"size": 0,"query":{"query_string":{ "match_all" : {}}}}

由于

2 个答案:

答案 0 :(得分:1)

根据ES scan query documentationsize参数不仅仅是结果的数量:

  

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