es 的数据结构
当一段文档被写入 Elasticsearch(ES)时,其内部处理过程以及文件系统中新增的文件形态可以分为以下几个阶段:
- 文档写入:内存层处理
- 写入内存缓冲区(Buffer)
- 文档被接收到后,首先被解析为一个 JSON 格式的结构。
- 文档的字段值会被分词(对于支持全文搜索的字段)或直接存储(对 于数值、日期等类型的字段)。
- 分词后的字段生成倒排索引(Term Dictionary 和 Posting List),并存储在内存缓冲区中。
- 与此同时,文档的原始 JSON 数据和元信息会被写入事务日志(Translog)。
- 记录事务日志(Translog)
- Translog 是一个顺序写入的日志文件,记录每次索引或删除操作,用于确保在系统宕机时数据不会丢失。
- 文档写入成功后,ES 会立即刷新 Translog 到磁盘,这是一种“预写日志”(Write-Ahead Logging)策略。
- 数据刷新(Flush):生成分段文件
- 触发刷新(Flush 或 Refresh)
- 默认情况下,每隔 1 秒(可配置)或内存缓冲区接近容量时,ES 会将缓冲区中的数据刷新为一个新的段(Segment)。
- 在刷新的过程中