未被查询的Elasticsearch索引refresh_interval刷新规则是什么?
Elasticsearch 索引刷新机制常见问题解答
1. 过去30秒无任何查询请求的索引触发刷新的时机
默认配置下,每秒1次的周期性刷新逻辑仅对近30秒内有搜索请求的索引生效。无搜索请求的索引只有满足以下任意条件时才会触发刷新:
- 收到新的搜索请求
- 内存缓冲区被未刷新的写入数据占满
- 达到30分钟的空闲刷新兜底阈值(ES内置的资源保护机制,避免内存长期被未持久化的数据占用)
2. 写入数据后长时间不搜索,首次搜索能否拿到最新写入结果
可以拿到最新的写入结果。
3. 写入后首次搜索可立即获取最新结果的实现逻辑
官方默认规则说明:Elasticsearch 每1秒周期性刷新索引,但该规则仅适用于过去30秒内收到过至少1次搜索请求的索引。
ES处理搜索请求的流程中,执行实际查询前会先校验索引的刷新状态:如果当前索引存在未刷新的写入数据,且距离上一次成功刷新的时间已经超过了index.refresh_interval配置的阈值(默认1秒),会先主动触发一次即时刷新,再执行查询逻辑。
这套机制保证了无论索引之前多久没有收到搜索请求,用户发起的首次搜索都能获取到最新的写入数据。
内容的提问来源于stack exchange,提问作者krezno
相关产品推荐
相关产品推荐

