es存储文件分析

2021-08-20  本文已影响0人  caster

观察es数据目录内会发现大量文件如下图所示:


一个shards内的文件

其中重要的有如下几个,存储三大头:

文件后缀 文件含义
.fdt Source文档存储的字段值
.fdx Source文档索引指针,需载入内存
.fnm 存储fields信息
.dvd docValues值,列式存储
.dvm docValues原信息,索引
.doc 包含每个term词频的docs列表即倒排表
.pos index中term出现的位置信息
.tim term词典,存储term信息(block)
.tip term词典的索引,需载入内存(FST)
.dim 数值类型索引,即BKD树
.dii .dim的索引
segment_2c 记录提交点信息
write.lock 防止多个IndexWriters写同一个文件

source源文档相关:
fnm,fdx,fdt 为行存储文件索引和value;
列式存储相关(sort/agg):
dvm,dvd为列式存储即docValue;
倒排索引相关:
tip,tim,pos,doc为倒排索引及词典索引相关内容。

kdd,kdi,kdm与BKD数相关:
BKD Tree,叶子节点存储一组值集合。当 es 做 ranger 查询的时候(适用于数值,日期,字符串类型),内存里的 B-tree 可以帮助快速定位到满足查询条件的叶子结点块在磁盘上的位置,之后对叶子结点块的读取几乎都是顺序的,即索引和数据分离。

存储文件压缩如下图(from tx 毕杰山)
tx大佬针对底层不同种类文件设计了一套压缩算法选择方案

lucene文件压缩算法
上一篇下一篇

猜你喜欢

热点阅读