Elasticsearch 窗口大小 max_result_wi

2020-05-07  本文已影响0人  gruan

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

上一篇下一篇

猜你喜欢

热点阅读