【问题标题】:How to get more than 10 thousand Documents at a time from Elasticsearch Using Jest client如何使用 Jest 客户端一次从 Elasticsearch 获取超过 10,000 个文档
【发布时间】:2021-01-05 07:27:49
【问题描述】:

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

请帮助我使用 jest client(java) 在 elasticsearch 中一次获取超过 10000 条记录

【问题讨论】:

    标签: elasticsearch elasticsearch-jest


    【解决方案1】:

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

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

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

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

    【讨论】:

    【解决方案2】:

    您可以更新 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 文件中获取永久解决方案。

    【讨论】:

    • 嗨,Harish,感谢您的评论!!!!!!!!!顺便说一句,增加这个 max_result_window 会导致任何内存问题吗?我使用的是 ES 的 5.X 版本
    • 不多,只是查询的时候会多占用一点内存。我以 100 万的限制使用它并且工作正常
    • 我们可以在 python 中做同样的事情吗@harshil9968
    • @ak3191 是的,使用 python 发出 post 请求。
    • 我已经做到了...@harshil9968.. 已经有一个问题.. 如果您能回答...stackoverflow.com/questions/52063840/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-08
    • 2019-12-12
    • 1970-01-01
    相关资源
    最近更新 更多