ES7.X 查询性能低

本文探讨了ES7.X中引入的'搜索空闲'概念导致的查询延迟,并提供了显式配置refresh_interval以解决索引刷新问题。通过配置index.refresh_interval='1s',避免索引在搜索空闲状态下频繁刷新,提升查询性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题场景:从ES2.X升级到ES7.X后,发现每个索引的前几次查询都比较耗时,在600ms左右,在连续查询多次后,耗时稳定在10ms左右。

原因:ES7.X版本开始,引入“搜索空闲(search idle)”的概念

 

未配置显式 index.refresh_interval 的索引的分片在分片变为“搜索空闲”后将不再在后台刷新(refresh),即分片没有看到任何 index.search.idle.after 秒后的搜索流量(默认为 30 秒)。访问搜索空闲分片的搜索将被“停放”,直到下一次刷新发生。

所以当一个分片长时间未接收到搜索请求,在下一次查询请求执行前,会进行一次刷新操作,导致查询耗时,但一旦分片处于活跃状态,查询请求不会触发刷新,查询耗时就是正常的。

解决办法:显式配置refresh间隔,避免搜索空闲状态下的索引在接收到搜索请求时进行refresh。

PUT /index/_settings
{
    "index.refresh_interval": "1s"
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值