Skip to content

正排索引特性

Wenyi Duan edited this page Nov 2, 2022 · 1 revision

多值正排索引去重索引

可以在schema配置中,将多值正排字段配置为去重正排索引,引擎会通过将doc的正排字段取值进行Hash的方式,将值相同的doc对应的值存储在同一地址,从而达到共用存储空间,存储去重的目的。去重的效果依赖于字段的取值情况。

单值正排和多值正排(offset)等值压缩

可以在schema配置中,将单值正排字段或者多值正排字段配置为等值压缩索引个数,引擎会将N个(2^n)连续文档的单值value(或者多值offset)进行等值压缩存储,即N个文档全相同则只存储一份,如果N个文档存在不同值则存储最小值和每个值与最小值的delta压缩值,从而达到存储空间的目的。多值正排offset的压缩效果在等值压缩效果好的前提下会有更好的压缩表现。

多值正排索引的可更新

对于多值正排索引默认为不可更新,可以显示配置为可更新。对于多值更新场景,在离线索引和在线索引的场景会有更新方式的区别。 在线场景下:对于配置为可更新的多值正排字段,会在内存中开辟一个可扩展的分片内存区域用来存储更新的value值,同时会将原先value对应的offset指向新的扩展分片地址,从而实现实时多值更新的功能。 离线场景下:对于配置为可更新的多值正排字段,会将更新的value通过patch文件的方式进行存储,在线加载patch文件并拷贝到扩展分片地址中,用来进行更新数据的读取。

pack attribute存储方式

可以将同一个文档的一组attribute进行打包按行存储。 在attribute数据使用过程中,由于紧密的存储对cpu数据缓存更加友好(减少cache miss),对一篇文档中的打包存储的attribute字段数据连续读取在性能表现上明显优于字段按列存储的方式。

Clone this wiki locally