记:Elasticsearch动态映射

编程

动态映射是一种偷懒方式,可直接创建索引并写入文档,文档中字段的类型是Elasticsearch自动识别的,不需要在创建索引时候设置字段的类型。在实际项目中,如果遇到的业务在导入数据之前不确定有哪些字段,也不清楚字段的类型是什么,在使用动态映射非常合适。当Elasticsearch在文档中碰到一个以前没见过的字段时,它会利用动态映射来决定该字段的类型,并自动把该字段添加到映射中,根据字段的取值自动推测字段类型的规则见表:

JSON格式的数据

自动推测的字段类型

null

没有添加字段

true or false

boolean类型

浮点类型数字

float类型

数字   

long类型

JSON对象

object类型

数组

由数组中第一个非空值决定

string

有可能是date类型(开启日期检测)、double或long类型、text类型、keyword类型

我们再看下Mapping,返回结果如下:

id、publish_date、name三个字段分别被推测为long类型、date类型和text类型,这就是动态Mapping的功劳。使用动态Mapping要结合实际业务需求来综合考虑,如果将Elasticsearch当做主要的数据存储使用,并且希望出现未知字段时抛出异常来提醒你注意这一问题,那么开启动态Mapping并不适用。在Mapping中可以通过dynamic设置来控制是否新增字段,接受一下参数:

  • true       默认值为true,自动添加字段。
  • false     忽略新的字段。
  • strict    严格模式,发现新的字段抛出异常。​​​​​​​

下面通过dynamic来控制新增字段,设置it类型下dynamic属性的取值为strict,也就是说,it类型下的文档中出现Mapping中没有定义的字段会抛出异常,命令如下:

我们可以看到文档并没有添加成功,该字段在Mapping中并没有定义,会抛出strict_dynamic_mapping_exception。

以上是 记:Elasticsearch动态映射 的全部内容, 来源链接: utcz.com/z/515771.html

回到顶部