Elasticsearch 结果限制问题

Elasticsearch results limit issue

我有一个 python 脚本,它应该打印我存储在 elasticsearch 中的 JSON 文件中所有人员的 ID。但我只得到十个结果(截断),因为我知道默认情况下只显示 10 个结果。

from elasticsearch import Elasticsearch
import sys
es = Elasticsearch()
res = es.search(index="my_docs", body={"query": {"match_all": {}}})
print("%d documents found" % res['hits']['total'])
for doc in res['hits']['hits']:
        print (" Doc ID: %s" % (doc['_id']))

它说找到了 5000 个文档,但 returns 只有 10 个 ID。

如何从我在 Elasticsearch 中的集合中打印所有文档的 Doc ID?

您需要告诉 ES return 十个以上的结果(这是默认值):

body={"query": {"match_all": {}}, 'results': 1000}

对于非常大量的结果,您需要以分页的方式获取所有结果; ES 提供了执行此操作的方法。

  1. 如果文档数量超过 10000,请使用 Scroll api。
  2. 使用带有限制的搜索 api 来获取指定的计数。