【ElasticSearch】:Mapping相关
-
Mapping
类似数据库中的表结构定义,主要作用如下:
- 定义Index下的字段名(Field Name)。
- 定义字段类型,例如数值型、字符串型、布尔型等。
- 定义倒排索引相关配置,比如是否索引、记录position等。
-
查看一个Index的Mapping的API
例如查看index为test_index的mapping,使用_mapping,查询结果中:
doc是这个index的type,忽略,ES6.X将废弃。
关注properties中的内容,每个字段及其字段类型(type) 。
-
自定义一个Index的Mapping的API
Mapping中的字段类型一旦设定后,禁止直接修改,因为底层基于Lucene实现的倒排索引生成后不允许修改。如果要修改,需要重建新的索引,然后做reindex操作。
-
dynamic参数
index级别的设置。
- true,默认值,允许自动新增字段
- false,不允许自动新增字段,新增字段的document可正常写入ES,但无法对新增字段查询
- strict,不允许自动新增字段,新增字段的document写入ES直接报错。
-
copy_to
字段级别的设置。
可以将多个已有字段都copy_to到 1个新字段,这样新生成的字段不占用存储,且方便查询。
-
index
字段级别的设置。
设置该字段是否可以被搜索,一般敏感信息字段设置为false,还可以节省倒排索引存储空间。
-
index_options
字段级别的设置。
设置倒排索引记录的内容。
-
null_value
字段级别的设置。
该字段录入ES的字段值为null时,可设置默认值。
-
dynamic_date_formats
字段级别的设置。
指定dynamic_date_formats可以让入库日期为date类型,否则有可能会是text类型。
-
动态模板Dynamic Mapping
目的:通用配置形成模板,简化mapping配置,减少配置工作量。
生产实践举例:
1.所有字符串类型默认都设置为keyword,即默认不分词,节约资源。
2.以message开头的字段设置为text,需要建立倒排索引分词检索。
3.double类型设定为float,节省存储空间。
4.支持设置多个动态模板,是从上至下执行的,只要匹配到就结束匹配。
-
索引模板Index Template
目的:类似于数据库的建表和定义表结构语句,固化索引创建操作,新建索引时自动应用预先设定的动态模板和mappings。
设置index_patterns参数,支持模式匹配索引。
支持配置多个索引模板,order大的优先级高。
查看和删除索引模板