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