接着上一篇继续:Elasticsearch(一)。
本篇将会简述 ES 的 Mapping 相关内容。
Mapping
Mapping (映射)在 ES 中的作用至关重要,数据结构、存储和索引规则等等都是通过 mapping 来进行设置的。
Dynamic Mapping (动态映射):
在使用传统关系型数据库如 mysql 时,如果不事先明确定义数据结构是无法进行数据操作的,但是在 ES 中不需要这样,因为 ES 本身会自己去检测数据并给出其数据类型然后进行索引或存储。所以称之为动态映射。
数据类型的判断及定义规则如下:
然而,仅仅依赖于 ES 自身去判断并定义数据类型显然是比较受限的,我们仍然需要对数据类型进行密切关注。
需要注意的是,虽然 mapping 映射是动态的,但这并不意味着我们可以随意的修改它,对于已经存在的 field mapping(字段映射)是无法直接修改的,只能重新索引(reindex),所以我们需要对 mapping 有一个深入的了解。
Field datatypes(字段数据类型):
ES 中的 filed(字段)如同 mysql 表中的列一样,其数据类型也有很多种:
Meta-fields(元字段):
每一个 document 都有一些与之关联的元数据:
Mapping parameters(映射参数):
设置 mapping 时的各种参数及其含义:
Dynamic templates(动态模板):
应用于动态添加字段时设置自定义 mapping 映射,通过在模板中设置匹配及映射的规则,匹配命中则会被设置为对应的 mapping ,匹配参数设置如下:
本篇文章参考官方文档整理了相关的内容。
Mapping 的设置其实是一个不断循环改进的过程,同时其与具体业务又有着密切的联系。理解了 Mapping 更有助于理解数据在 ES 中的搜索行为表现。
下一篇文章将会讲述另一个与 Mapping 息息相关的 Analysis 。