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 提供了执行此操作的方法。
- 如果文档数量超过 10000,请使用 Scroll api。
- 使用带有限制的搜索 api 来获取指定的计数。
我有一个 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 提供了执行此操作的方法。
- 如果文档数量超过 10000,请使用 Scroll api。
- 使用带有限制的搜索 api 来获取指定的计数。