• 首页
  • 邻居
  • 关于
  • 归档
  • 搜索
  • 夜间模式
    ©2020-2026  我的学习笔记 Theme by OneBlog

    我的学习笔记博客

    搜索
    标签
    # 随笔 # Java # 教程 # openwrt # Mysql # SQL # 爬虫 # post # Js调优 # MAVEN
  • 首页>
  • Java>
  • 正文
  • ES深度分页查询报错 Result window is too large

    2024年04月15日 1.2 k 阅读 0 评论 1947 字
    Caused by: org.elasticsearch.ElasticsearchException: Elasticsearch exception [type=illegal_argument_exception, reason=Result window is too large, from + size must be less than or equal to: [5000] but was [321880]. See the scroll api for a more efficient way to request large data sets. This limit can be set by changing the [index.max_result_window] index level setting.]
        at org.elasticsearch.ElasticsearchException.innerFromXContent(ElasticsearchException.java:491) ~[elasticsearch-7.17.3.jar:7.17.3]
        at org.elasticsearch.ElasticsearchException.fromXContent(ElasticsearchException.java:402) ~[elasticsearch-7.17.3.jar:7.17.3]
        at org.elasticsearch.ElasticsearchException.innerFromXContent(ElasticsearchException.java:432) ~[elasticsearch-7.17.3.jar:7.17.3]
        ... 122 common frames omitted

    这个异常意味着你的Elasticsearch查询尝试返回的结果数量超出了默认限制。默认情况下,Elasticsearch限制从一个搜索请求返回的文档数量为10,000。在你的情况下,你尝试返回了321,880个文档,因此触发了异常。

    为了解决这个问题,你可以考虑以下几种方法:

    使用滚动API:滚动API是一种更有效地处理大型数据集的方法。它允许你在多个请求之间维护一个持久的搜索上下文,并在不同的请求之间获取文档批次。这样可以避免从整个数据集中一次性获取大量文档。
    
    调整索引级别的设置:你可以通过更改索引级别的设置来增加index.max_result_window的值,以允许更大的结果窗口。但是,这种方法可能会导致内存压力增加,因为Elasticsearch需要在内存中维护大量的搜索上下文。
    
    优化查询:如果可能的话,尝试优化你的查询以减少返回的文档数量。你可以使用更精确的查询条件,或者利用Elasticsearch的聚合功能来汇总数据而不是一次性返回所有文档。
    
    分页处理:如果你需要返回的文档数量仍然较大,你可以考虑分页处理结果。每次请求只返回一部分文档,并根据需要逐步获取更多的文档。
    

    根据你的具体需求和系统配置,选择最合适的方法来解决这个问题。

    调整索引级别的设置这个怎么设置
    要调整索引级别的设置,你需要修改Elasticsearch中索引的参数。具体来说,你需要修改index.max_result_window参数,该参数定义了从一个搜索请求返回的最大文档数目。

    你可以通过以下步骤来修改这个参数:

    使用任何支持HTTP请求的工具(如curl、Postman等),向Elasticsearch发送HTTP请求。

    发送一个PUT请求,指定要修改的索引名称,以及新的index.max_result_window的值。例如:

    PUT /your_index_name/_settings
    {
      "index.max_result_window": 50000
    }

    上面的示例将your_index_name索引的index.max_result_window参数值设置为50,000。你可以将该值设置为你认为合适的任何值,以满足你的需求。

    发送请求后,Elasticsearch会返回一个确认响应,表示设置已经成功应用。

    请注意,修改索引级别的设置可能会对系统性能产生影响,特别是当你增加了返回文档的数量时。确保在修改参数之前仔细评估系统的资源和性能需求。

    本文著作权归作者 [ admin ] 享有,未经作者书面授权,禁止转载,封面图片来源于 [ 互联网 ] ,本文仅供个人学习、研究和欣赏使用。如有异议,请联系博主及时处理。
    取消回复

    发表留言
    回复

    首页邻居关于归档
    Copyright©2020-2026  All Rights Reserved.  Load:0.017 s
    京ICP备18019712号
    Theme by OneBlog V3.6.5
    夜间模式

    开源不易,请尊重作者版权,保留基本的版权信息。