映射(Mapping)
Mapping(映射)是定义一个文档和它包含的字段如何存储和索引的程序。
每一个文档是字段的集合,每一个字段有它自己的数据类型。当映射你的数据时,你创建了一个包含了与文档相关的字段组成的列表的一个映射定义。一个映射定义也包含了元数据,像 _source 字段--自定义了一个文档关联的元数据如何被处理。
使用动态映射和显式映射来定义你的数据。基于你在哪儿进行你的数据旅程,每一种方法提供了不同的好处。例如:显式映射字段用在你不想使用默认值,或者想要获得在创建的字段上有更好的控制。你可以之后允许Elasticsearch动态地添加其它的字段。
🏳️ 在7.0.0之前,映射定义包含了一个类型名称。Elasticsearch 7.0.0 及之后不再接收一个 默认 映射。查看去除映射类型。
试验映射选项
在搜索请求里定义运行时字段以试验不同的映射选项,同时也可以在搜索请求期间通过覆盖映射的值来处理你的索引映射值的错误。
动态映射
动态映射允许你在刚刚起步的时候实验和探索数据。当索引一个文档时Elasticsearch自动添加新的字段。你可以将字段添加到顶层的映射,然后再到内部的对象和嵌套的字段。
使用动态模板来定义应用于基于匹配条件动态添加字段的定制的映射。
显式映射
显式映射允许你精确地选择如何来定义映射,比如:
防止映射爆炸的设置
在一个索引里定义太多的字段能够导致映射爆炸,这能引起内存溢出的错误和难以从中恢复的复杂场景。
考虑一个这样的场景,每一个新插入的文档都引进了新的字段,比如使用了动态映射。每一个新的字段都被添加到索引映射,随着映射的增长这将变成一个问题。
使用映射限制设置来限制映射字段的数量(手动创建或者动态创建)将避免文档产生映射爆炸。