如何从Elasticsearch 7.X.X中获取超过10000条记录

qnyhuwrf  于 2022-11-22  发布在  ElasticSearch
关注(0)|答案(2)|浏览(193)

我需要从Elasticsearch中获取超过10000条记录,但是我无法在python的Elasticsearch 7.2中设置index.max_result_window
我已经使用以下命令在Elasticsearch V6中将窗口限制设置为100000,该命令正常工作。
es.indices.create(index=prod_index, body={"settings": {"index.mapping.total_fields.limit": 50000, "index.max_result_window" : 100000})
相同的命令在Elasticsearch 7.2中无效

du7egjpx

du7egjpx1#

最好不要这样做,这就是为什么他们把最大值设置为10000。增加index.max-result-window不是一个好主意,这可能会导致集群延迟或崩溃。当你设置一个大小时,ES会在提取数据之前创建一个相同大小的堆。这些记录将留在RAM中,除非你有很好的硬件和巨大的堆空间,否则最好不要这样做。因为它可能会使群集崩溃或降低群集速度。
替代方法是使用scroll APIFrom-sizeSearch-after(可能是最佳选择-
(第10页)
您可以查看this解决方案。它帮助我在不关闭集群的情况下获取了更多的700k文档。您也可以查看this答案。

sf6xfgos

sf6xfgos2#

您只需遵循以下结构:

from elasticsearch import Elasticsearch

es=Elasticsearch(hosts=hosts, port=port, http_auth=("username", "password"), timeout= 1000000)

es.indices.put_settings(index="index_name".format(CurrentDate), body={"index":{"max_result_window": 20000000}})

相关问题