Elasticsearch查询报错 Result window is too large

一现象:

        es数据分页查询前端提示系统异常,后端报错日志

二根本原因:

默认情况下,Elasticsearch 限制了 from + size 参数的组合不能超过 10,000 条记录,用于防止查询大数据集时对系统资源的过度消耗

三解决办法:

        方法一:修改索引级别的 index.max_result_window 设置来增加允许返回结果窗口的大小

                Elasticsearch查询报错 Result window is too large_第1张图片        方法二:使用 Scroll API:Scroll API 是 Elasticsearch 提供的一种更高效地请求大数据集的方式。通过 Scroll API,您可以持续获取大量数据而无需一次性返回所有数据 

        方法三:使用search_after API

三种分页优缺点对比

分页方式 优点 缺点 场景
from + size 灵活性好,实现简单 深度分页问题

数据量比较小,能容忍深度分页问题

scroll 解决了深度分页问题 无法反应数据的实时性(快照版本)维护成本高,需要维护一个 scroll_id,滚动上下文开销很大 海量数据的导出需要查询海量结果集的数据
search_after 不存在深度分页问题能够反映数据的实时变更 实现复杂,需要有一个全局唯一的字段连续分页的实现会比较复杂,因为每一次查询都需要上次查询的结果 海量数据的分页

你可能感兴趣的:(elasticsearch,大数据,搜索引擎)