1

我有一个 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 个文档,但只返回 10 个 ID。

从我在 Elasticsearch 中的集合中打印所有文档的 Doc ID 的方法是什么?

4

2 回答 2

1

您需要告诉 ES 返回十多个结果(这是默认值):

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

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

于 2017-06-17T01:18:04.047 回答
0
  1. 如果文档数超过 10000,请使用 Scroll api。
  2. 使用带有限制的 Search api 来获取指定的计数。
于 2017-11-16T12:37:09.587 回答