Mapping
mapping 类似数据库中的表结构定义,作用如下:
- 定义index下字段名
- 定义字段类型,例如数值型,字符串型等
- 定义倒排索引的配置,例如是否为索引,记录position等
自定义mapping
mapping字段类型一旦设计后,禁止直接修改,因为其生成的倒排索引生成后不允许修改,但是可以建立新的索引,做reindex。但是允许做新增字段,通过dynamic属性设置字段字段规则
- true 默认 允许新增字段
- false 不允许自动新增字段,但是文档可正常写入,但无法对字段进行查询等操作
- strict 文档不可写入,否则报错
copy_to
将该字段的值复制到目标字段,实现类似_all的作用
不会出现在_source中,只用来搜索
index
设置index为true时,记录这个字段为索引,false不记录
index_options 用于控制倒排索引的记录内容,四种配置
- docs 只记录docid
- freqs 记录 docid 和 term frequencies
- positions 记录 doc id 、term frequencies 、 term position
- offsets 记录 doc id、term frequencies、term position、character offsets
- text 类型默认配置为positions 其他默认docs
- 记录内容越多 占用空间越大
数据类型
核心数据类型
- 字符串
- 数值型
- 日期型
- 布尔
- 二进制
- 范围
复杂数据类型
- 数组
- 对象
- 嵌套类型
- 地理位置
专用类型
- ip
- 自动补全 completion
- 记录分词数 token_count
- 记录字符串hash
- percolator
- join
多字段特性
允许对同一个字段采用不同的配置,例如分词,常见例子如对人名实现拼音搜索,只需要再任命中新增子一个子字段pinyin即可
dynamic-mapping
没有指定字段类型时,字段会根据json的类型自动识别。
dynamic date
es可自动识别日期
- 默认为["strict_date_optional_time","yyyy/MM/dd HH:mm:ss Z||yyyy/MM/dd Z"]
- strict_date_option_time 是 ISO datatime 格式,完整格式类似如下
YYYY-MM-DDThh:mm:ssTZD(eg 1997-07-16T19:20:30+01:00) - dynamic_date_formats可以自定义日期类型
- date_detaction 可以关闭日期自动识别的机制
字符串是数字时,默认不会自动识别为整形,numeric_detection可以开启字符串中数字的自动识别
dynamic template
允许es自动识别的数据类型,字段名等动态设定字段类型,可以实现如下效果
- 所有字符串类型都设定为keyword类型 默认不分词
- 以message开头的字段都设定为text类型 分词
- 所有以long开头的字段都设定为long类型
- 所有自动匹配为double类型的都设定为float类型 节省空间
自定义mapping的操作步骤如下
- 写入一条文档到es临时索引中,获取es自动生成的mapping
- 修改步骤1得到的mapping,自定义配置
- 使用步骤2的mapping创建实际所需索引
索引模板
用于再新增索引时自动应用预先设定的配置,简化索引创建的操作步骤
- 可以设定索引的配置和mapping
- 可以有多个模板,根据order设置 order值大的覆盖小的
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。