Elasticsearch数据建模之——mapping字段的相关配置

本文详细介绍了Elasticsearch的mapping配置,包括字段类型设定、检索需求判断、版本管理和字段数量控制。重点讲解了如何处理null值、使用multi-fields、动态字段映射和动态模板。同时,提供了实例和关于mapping修改的不同方法,如使用别名、reindex和_update_by_query。
摘要由CSDN通过智能技术生成

es作为以倒排索引为基础实现的存储体系,不遵循关系型数据库中的范式约定,它的数据建模,是根据部署需求和性能需求的物理模型;而在这个建模的过程中,由于es是可以水平扩展的,可以存储到TB级以上的大数据的原因,他的一些预配置就显得尤其重要了,这关系到整个es的性能和查询效率。

—//—

类似于关系型数据库里面的表结构设计,es中对应的是mapping配置;这一章主要讲的就是mapping设置的时候的一些注意点。

mapping字段 的相关配置


名称 枚举 作用
enable true/false 仅存储,不做搜索和聚合分析
index true/false 是否构建倒排索引,false不记录,即不可搜索
index_options docss/freqs/positions/offsets 存储倒排索引的哪些信息,text类型默认配置为positions,其他默认为docs ,记录内容越多,占用空间越大。
norms true/false 是否存储归一化的相关参数,如果字段仅用于过滤和聚合分析,可关闭
doc_values true/false 是否开启,用于排序和聚合分析
field_data true/false 是否为text类型启用,实现排序和聚合分析
store true/false 是否存储该字段值
coerce true/false 是否开启自动数据类型转换,比如字符串转数字,浮点转int(默认是true)
multifields 多字段:灵活使用多字段来解决多样的业务需求
dynamic true/false/strict 控制mapping的自动跟新
date_detection true/false 是否自动识别日期类型 (建议false,手动去设置格式)

Mapping字段属性的设定流程


判断是何种类型的字段
  • 字符串类型:需要分词就设定为text,否则设定为keyword类型
  • 枚举值类型:基于性能考虑设定成keyword类型,即便该数据为整型(比如状态码)
  • 数值类型:尽量选择贴近的数据类型,比如byte即可表示所有数值的时候,选择byte,不要用long
  • 其他类型:比如布尔类型,日期,地理数据等
判断该字段是否需要检索
  • 完全不需要检索,排序,聚合分析的字段:enable设置为false
  • 不需要检索的字段:index设置为false
  • 需要检索的字段,可以根据如下的配置设定需要的存储力度:
    • index_options: 结合需要设定
    • norms: 不需要归一化数据时关闭即可
  • 是否需要排序和聚合分析?
    不需要排序或者聚合分析功能:doc_values设定为false;fielddata设定为false
  • 是否需要专门存储当前字段的数据?
    store设定为true,即可存储该字段的原始内容(与_source中的不相关) 一般结合_source的enabled设定为false时使用

    其他建议


1.对mapping进行版本管理

包含在代码或者以专门的文件进行管理,添加好注释,并加入git等版本管理仓库中方便回顾
为每个增加一个metadata字段,在其中维护一些文档相关的元数据,方便对数据进行管理

{
  "metadata":{
    "version":1
  },
  "username":"alfred",
  "job":"engineer"
}         

#mapping版本,可以自行制定,比如每次更新mapping设置后,该version加1
2.防止字段过多

字段过多:难于维护,当字段成百上千时,基本很难有人明确知道每个字段的含义;mapping的信息存储在cluster state里面,过多的字段会导致mapping过大,最终导致更新变慢。</

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值