2 mapping映射-介绍
映射:
映射定义了,elasticsearch中每一个字段被处理的方式,即该字段是当做整数,日期,还是字符串处理等。
实际中elasticsearch的数据类型会更多
常用的映射定义如:
定义哪一个字符串字段应该当做text类型
定义哪一个字段,包含数字,日期,地理位置
定义哪些字段,应该被_all字段索引到
日期的格式
定义通用规则控制动态增加的字段(field)
映射类型:
每个索引都有自己的映射类型,用于定义json文档是如何被索引的
映射分类:
静态映射
可以理解为mysql中表设计,每一个字段被指定为一种数据类型
动态映射
当文档中出现没有定义过的字段时,动态映射会自动决定该字段的类型,并对该字段添加映射
配置映射分类:
通过dynamic属性进行控制
true: 默认值,动态添加字段
false:忽略新字段
strict:遇到陌生字段,抛出异常
使用范围
根对象上或者object类型的任意字段上
字段类型:
元数据字段(Meta-fileds)
元数据字段,主要用于了文档是如何处理的,包括_index,_type,_id,_source
标识元数据
_index 文档所属的索引
_type 文档的映射类型
_id 文档的id号
文档元数据
_source 代表文档内容的原始json
如果文档内容过多,将它存储在es中,会消耗大量资源,可以将之关闭,选择部分字段进行存储,或者全部关闭,交由第三方hbase什么的存储。
_size 由mapper-size插件计算的_source的大小
索引元数据
_filed_name 所有属性字段,包括non-null值的字段
_ignored 索引时被忽略的字段
路由元数据
_routing 标识文档与shard的关系,文档路由参数
其它元数据
_mete 应用特殊元数据
属性字段(fields or properties)
定义了文档包含的字段类型
属性字段的类型
基本类型:text,keyword,date,long,double,boolean,ip
支持json的嵌套类型,如object或者nested
特殊类型 geo_point(地理位置),geo_shape,completion
同一个属性字段,可以用于不同的目的。比如string可以当做text用于全文索引,keyword可以用于聚合和排序等
使用dynamic开启动态映射后,容易出现映射爆炸。尤其是当文档比较大时,假如它每次都有新的关键字插入,这样就会导致映射爆炸,以下推荐几个参数用于处理这种情况。
index.mapping.total_fields.limit
索引中最大的属性字段数目,包括alias和object,默认1000
index.mapping.depth.limit
属性字段的深度
index.mapping.nested_fields.limit
index.mapping.nested_objects.limit
index.mapping.field_name_length.limit
属性字段名长度
映射名更改:
已经存在的映射不允许修改,除非创建一个新的映射,并将旧映射的数据重新导入。
如果是修改映射中的属性字段名,可以通过命名别名实现。

浙公网安备 33010602011771号