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

Idr*_*sou 3 api rest elasticsearch

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

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

谢谢

Nik*_*iev 5

根据 ES扫描查询文档size参数不仅仅是结果数:

size 参数允许您配置每批结果返回的最大命中数。每次调用 scroll API 都会返回下一批结果,直到没有更多结果要返回为止,即 hits 数组为空。

要检索所有结果,您需要按照上述文档中描述的方式对 API 进行后续调用,或者使用一些现成的实现,例如在python 中。这是一个在标准输出上转储生成的 json 的示例脚本:

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))
Run Code Online (Sandbox Code Playgroud)