美文网首页
Elasticsearch 窗口大小 max_result_wi

Elasticsearch 窗口大小 max_result_wi

作者: gruan | 来源:发表于2020-05-07 11:51 被阅读0次

    ES 默认的窗口大小为 10000 , 如果预计的总条数大于窗口大小, 就会报如下错误:

    "Result window is too large, from + size must be less than or equal to: [25000] but was [30040]. 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.

    因为 ES 是设计用于搜索, 而不是用于存储数据的. 10000 条足以满足大部分业务需求. 而且ES 搜索不是简单的查询前10000条, 而是呈指数倍的搜索, 所以不建议修改这个窗口大小.

    如果业务上有需求, 那就需要谨慎修改这个参数.
    修改窗口大小:

    put http://xxx/_settings
    {
        "index" : {
            "max_result_window" : 25000
        }
    }
    

    ES 5.X 在修改这个参数后, 就可以直接看到效果.
    但是在 ES 7.X下 (没有使用过 6.X, 不了解), 那个 total 却还一直是 10000.


    total 返回不正确, 但是还是可以查询到结果

    可以看到在 ES 7.X 下, 虽然把 max_result_window 修改成了 25000, 但是 total 仍然是 10000. 这是因为返回的是一个大概的值. 如果需要返回准确的条数, 需要在查询条件中添加:

    "track_total_hits": true
    

    但是这个参数是要牺牲性能为代价的, 所以还是要谨慎使用

    具体参考: track_total_hits

    相关文章

      网友评论

          本文标题:Elasticsearch 窗口大小 max_result_wi

          本文链接:https://www.haomeiwen.com/subject/zlboghtx.html