1

ElasticSearch 默认提供 10 条记录,但是我们可以设置 size 参数并且可以获取超过 10 条记录但有限制,如果我们使用 Elasticsearch 的 Jest 客户端,我们只能设置 10000 作为记录大小,如果超过 10000然后抛出异常。

请帮助我使用 jest 客户端(java)在 elasticsearch 中一次获取超过 10,000 条记录

4

2 回答 2

4

这个限制是有原因的——引用文档:

默认为 10,000 是一种安全措施,index.max_result_window搜索请求占用堆内存和时间与 from + size 成正比。

根据您的用例,有更好的选择:

  • 实时/面向用户:使用具有良好响应时间和合理堆使用率的Search After (并避免深度分页)。
  • 机器/批处理(通常用于读取所有数据):Scroll,它创建一个搜索上下文并在指定的时间内保持打开状态。只要上下文是开放的,结果也将是稳定的。
于 2017-03-24T14:25:32.473 回答
3

您可以更新 elasticsearch 的 max-result 窗口。

curl -XPUT "http://localhost:9200/my_index/_settings" -d '{ "index" : { "max_result_window" : 500000 } }'

但这只会持续到 Elastic 重新启动。你可以做出改变

index.max_result_window: 1000000

elasticsearch.yml存档永久解决方案。

于 2017-03-23T10:18:46.477 回答