Elasticsearch中的刷新(Refresh)和刷新间隔介绍
在 Elasticsearch 中,刷新(Refresh) 是控制索引数据何时对搜索可见的机制,而 刷新间隔(Refresh Interval) 则是配置该机制执行频率的参数。理解这两个概念对于平衡搜索实时性与写入性能至关重要。
一、刷新(Refresh)的本质
- Lucene 索引结构与搜索可见性
- Elasticsearch 基于 Lucene 实现,Lucene 将索引数据存储为 段(Segment)。
- 新写入的数据首先被存储在 内存缓冲区(In-memory Buffer) 中,此时数据对搜索不可见。
- 刷新(Refresh)操作:将内存缓冲区中的数据写入到 文件系统缓存(Filesystem Cache),生成新的段(Segment),使数据对搜索可见。这个过程不涉及磁盘 I/O(比持久化到磁盘快得多)。
- 与持久化(Flush)的区别
- 刷新(Refresh):数据从内存缓冲区到文件系统缓存,搜索可见,但未持久化到磁盘。
- 持久化(Flush):数据从文件系统缓存写入