3.5 ElasticSearch数据建模之Mapping设计

1.Mapping字段的相关配置
(1).enabled

  • 值选项:true | false
  • 使用场景:默认为true,如果设置为false则该字段仅做存储,不做搜索、算分排序和聚合分析

(2).index

  • 值选项:true | false
  • 使用场景:是否构建倒排索引,如果设置为false,则该字段不做搜索

(3).doc_values

  • 值选项:true | false
  • 使用场景:是否启动doc_values,如果设置为false,则该字段不做算分排序和聚合分析

(4).norms

  • 值选项:true | false
  • 使用场景:在算分排序时使用,如果字段仅用于搜索和聚合分析,可设置为false

(5).index_options

  • 值选项:docs | freqs | positions | offsets
  • 使用场景:存储倒排索引的相关信息

(6).field_data

  • 值选项:true | false
  • 使用场景:当字段type为text类型时启用,实现算分排序和聚合分析

(7).store

  • 值选项:true | false
  • 使用场景:是否存储该字段,默认不存储,因为elasticsearch原始数据存储在_source字段

(8).coerce

  • 值选项:true | false
  • 使用场景:是否开启数据类型自动转化功能,比如字符串转为数字、浮点转为整型等

(9).dynamic

  • 值选项:true | false | strict
  • 使用场景:控制mapping自动更新

2.Mapping设计
(1).字段属性的设定流程

  • 判断该字段是何种类型,是日期类型还是字符串类型
  • 判断该字段是否需要检索,需要时则将index设置为true
  • 判断该字段是否需要排序或聚合分析,需要时则将doc_values设置为true,fielddata设定为true
  • 判断该字段是否需要另行存储,需要时则将store设置为true

(2).字段是何种类型

  • 字符串类型:需要分词则设定为text,否则设置为keyword
  • 枚举类型:基于性能考虑将其设定为keyword,即便该数据为整型
  • 数值类型:尽量选择贴近的类型,比如byte可表示所有数值的时候,即选用byte,不要用long
  • 其他类型的,比如布尔类型、日期、地理位置等

(3).字段是否需要检索

  • 完全不需要检索、排序、聚合分析:enabled设置为false
  • 不需要检索:index设置为false
  • 需要检索:可以通过index_options和norms配置设定需要的存储粒度

(4).字段是否需要排序或聚合分析
不需要进行排序或者聚合分析功能的字段,doc_values设定为false、fielddata设定为false即可。

(5).字段是否需要另行存储
如果需要专门存储当前字段的数据,则将store设定为true,即可以存储该字段的原始内容(与_source中的原始数据是不相关的)。一般store设置为true时,会把_source的enabled设定为false。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值