如何从Elasticsearch使用Jest客户端一次获得超过1万个文档

时间:2017-03-23 09:50:58

标签: elasticsearch jest

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

请帮助我使用jest client(java)

在elasticsearch中一次获得超过1万条记录

先谢谢

2 个答案:

答案 0 :(得分:3)

这个限制是有原因的 - 引自文档:

  

默认为10,000的index.max_result_window是安全措施,搜索请求占用堆内存,时间与+尺寸成正比。

根据您的使用情况,有更好的选择:

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

答案 1 :(得分:1)

您可以更新elasticsearch的最大结果窗口。

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

但是这只会在Elastic重新启动之前保持不变。你可以做出改变

index.max_result_window: 1000000

elasticsearch.yml文件中以获得永久解决方案。