动态映射
当 Elasticsearch 遇到文档中以前 未遇到的字段,它用 dynamic mapping 来确定字段的数据类型并自动把新的字段添加到类型映射。
有时这是想要的行为有时又不希望这样。通常没有人知道以后会有什么新字段加到文档,但是又希望这些字段被自动的索引。也许你只想忽略它们。如果Elasticsearch是作为重要的数据存储,可能就会期望遇到新字段就会抛出异常,这样能及时发现问题。
幸运的是可以用 dynamic
配置来控制这种行为 ,可接受的选项如下:
-
动态添加新的字段—缺省
-
忽略新的字段
-
如果遇到新字段抛出异常
true
false
strict
配置参数 dynamic
可以用在根 object
或任何 object
类型的字段上。你可以将 dynamic
的默认值设置为 strict
, 而只在指定的内部对象中开启它, 例如:
PUT /my_index
{
"mappings": {
"my_type": {
"dynamic": "strict", (1)
"properties": {
"title": { "type": "string"},
"stash": {
"type": "object",
"dynamic": true (2)
}
}
}
}
}
如果遇到新字段,对象 my_type
就会抛出异常。
而内部对象 stash
遇到新字段就会动态创建新字段。