elasticsearch 字段常用配置参数解释

主要解释下面3个常用的参数:

  1. index 参数
  2. store 与 _source 参数
  3. doc_value 参数

1、index 参数

默认为true。当设置为true时,代表需要对该字段进行检索,也即倒排查询,根据 query 条件 查询 doc_id

2、store 与 _source 参数

这2个参数是“互补”的。一般而言,_source 设置成 false,然后具体需要获取哪个字段时,将该字段的 store 选项设置成true。因为开启 _source ,表示直接存储的原始的 doc 文件内容,占用的磁盘空间较大。而 store 则表示只存储此字段,采用的是:“行存的方式”(by the way doc_value 是列存方式),相比于_source 存储原始的doc文件,“行存方式” 会对该字段建“索引”(索引文件fdx、fdm,数据文件fdt),从而能够高效访问。

3、doc_value

默认开启。开启doc_value意味着:在写入doc时,会对该字段创建:列存索引,用于排序聚合。类似于HBase,某字段开启 doc_value 后,会把所有文档中该字段的值放在“一起存储”,由于同一个字段它的类型是确定的,那么该字段所有的值都放在一起存储能够很好地使用压缩算法进行压缩存储。

举例:有个ES索引有100个doc,其中有个字段是“销量字段 sale_cnt”,它是int型的,对销量字段开启了doc_value,则这100个doc的 sale_cnt 字段的值 都会“放在一起存储”,由于这些值都是 int 型的,那就可以用各种数据结构做存储优化(比如压缩算法)

当需要对 销量字段 做排序时,显然是只有获取 销量字段 sale_cnt 所有的值才能排序,那么开启 doc_value 就能大大加速排序了。这也是为什么官方文档中说:doc_value 用于排序聚合的原因。

总结

index 参数代表建立倒排索引结构,是倒排存储。而:store 和 doc_value 则代表建立:正排索引,正排索引有2种存储方式:行存和列存,其中 store 采用行存方式实现,doc_value 采用列存方式实现。

参考链接

index参数:https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-index.html
_source参数:https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-source-field.html
store参数:https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-store.html
doc_value参数:https://www.elastic.co/guide/en/elasticsearch/reference/current/doc-values.html

posted @ 2023-08-23 18:06  大熊猫同学  阅读(183)  评论(1编辑  收藏  举报