Elasticsearch查询特定日期后的数据时无法返回结果或统计值

问题现象

在Elasticsearch中,当遇到查询特定日期后的数据时无法返回结果或统计值的问题,这通常是因为Elasticsearch的生命周期管理功能导致的。当索引达到一定的时间阈值时,Elasticsearch会自动将其分裂为多个冷热索引。新分裂的索引会继承原始索引的默认设置,如index.max_result_window,这通常是10000。然而,原始索引可能已经被调整以允许更大的结果窗口值。

因此,当查询跨越索引分裂日期时,查询可能会因为窗口值过大而无法正确执行。在Java代码中,可能使用了SearchRequest对象,并将size参数设置为Integer.MAX_VALUE,即2147483647。这个值超出了Elasticsearch默认允许的窗口范围,导致查询失败,而没有抛出任何错误。

为了解决这个问题,需要在每个索引分裂后手动调整新索引的最大结果窗口值。这可以通过发送一个PUT请求到_all/_settings端点来实现,设置index.max_result_window为2147483647。

请注意,这个问题不会影响Elasticsearch的拉取接口(pull interface),这意味着从Elasticsearch拉取数据的操作不会受到影响。

解决方案

每次分裂完索引后重新发送该请求

[PUT]  _all/_settings
{ 
  "index.max_result_window": 2147483647
}
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值