es scroll深分页查询丢数采坑实录
问题描述
es 采用scroll方式查询数据时出现大量数据丢失。用from查询hint的总数6774,scroll查询hint的总数2558,数据差别明显 。
问题排查过程
-
进容器分别执行from和scroll命令查询,发现scroll执行时es抛出异常,
Trying to create too many scroll contexts. Must be less than or equal to: [500]. This limit can be set by changing the [search.max_open_scroll_context] setting.
如下图;
-
针对提示信息,修改参数 search.max_open_scroll_context 扩大至10000,问题依旧存在;
-
怀疑代码未clear scrollId,检查代码,未发现问题;
-
百度之,结果千篇一律,未果;
-
google之,果然发现问题,es7.7之前版本存在bug,scroll context 计数器存在问题。百度误我;
解决方案
1.search.max_open_scroll_context 设置Integer最大值
2.重启es
3.升级es版本至7.7.x或之后版本