es scroll查询采坑实录

问题描述

es 采用scroll方式查询数据时出现大量数据丢失。用from查询hint的总数6774,scroll查询hint的总数2558,数据差别明显 。

问题排查过程

  1. 进容器分别执行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.
    如下图;
    在这里插入图片描述

  2. 针对提示信息,修改参数 search.max_open_scroll_context 扩大至10000,问题依旧存在;

  3. 怀疑代码未clear scrollId,检查代码,未发现问题;

  4. 百度之,结果千篇一律,未果;

  5. google之,果然发现问题,es7.7之前版本存在bug,scroll context 计数器存在问题。百度误我;
    在这里插入图片描述

解决方案

1.search.max_open_scroll_context 设置Integer最大值
2.重启es
3.升级es版本至7.7.x或之后版本

人生就是不断采坑的过程啊

Alt

Elasticsearch scroll 查询是一种用于处理大型数据集合的技术。它允许您在不影响性能的情况下,逐步地检索大量的搜索结果。 以下是一个基本的scroll查询的示例: ``` POST /my_index/_search?scroll=1m { "size": 100, "query": { "match" : { "title" : "elasticsearch" } } } ``` 在上面的查询中,我们指定了一个初始搜索请求,并将scroll参数设置为1分钟。我们还指定了一个"size"参数,该参数指定了每个批次要返回的文档数。在此示例中,我们将每个批次的文档数设置为100。 当我们运行此查询时,Elasticsearch将返回一个初始的搜索结果集,并为我们提供一个scroll_id。我们可以使用此scroll_id执行后续的搜索请求,以逐步检索结果。 以下是一个使用scroll_id执行后续搜索请求的示例: ``` POST /_search/scroll { "scroll": "1m", "scroll_id": "DXF1ZXJ5QW5kRmV0Y2gBAAAAAAAAAD4WYm9laVRMNGxKUXE2Z2lKSEFZa1VUQQ==" } ``` 在上面的查询中,我们指定了一个scroll_id参数,该参数包含之前搜索请求返回的scroll_id。我们还将scroll参数设置为1分钟,以便Elasticsearch知道我们要继续检索结果。 使用scroll查询时,需要注意以下几点: 1. 每个scroll查询请求都会消耗一些系统资源,因此不应该无限制地使用它。 2. 一旦您完成了scroll查询,您应该及时清除scroll上下文,以释放资源。 3. 如果您的查询需要对大量文档进行排序,scroll查询可能不是最佳选择。排序会增加查询的内存使用量,从而增加查询的资源消耗。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值