es 版本:7.6
dynamic 属性是用来配置,当写入的时候出现新字段时候的行为。有 true
,false
,strict
三种。
true
是默认值,自动添加新出现的字段到 mapping 中。
false
,不添加新出现的字段到 mapping 中,但可以在 doc 中保存新字段。
"strict"
不允许出现新字段,会报错。其中嵌套结构内部支持单独配置。
修改 dynamic 配置的方法
修改为 true
// zm_blog 是索引名
PUT zm_blog/_mapping
{
"dynamic": true
}
修改为 false
// zm_blog 是索引名
PUT zm_blog/_mapping
{
"dynamic": false
}
修改为 strict
// zm_blog 是索引名
PUT zm_blog/_mapping
{
"dynamic": "strict"
}
关于 nested 结构内字段的动态映射问题
关于嵌套结构内的动态映射,通过实验,该版本在外层指定了 dynamic 配置后,嵌套结构内部若未配置 dynamic,与外层一致。如果嵌套结构内部指定了 dynamic 配置,以配置的为准。
- 未配置嵌套结构dynamic属性
PUT zm_blog4
{
"settings": {
"number_of_replicas": 0
},
"mappings": {
"dynamic":"strict", // 外层指定
"properties": {
"name": {
"type": "text"
},
"desc":{
"properties": {
"simple":{
"type":"text"
},
"complete": {
"type":"text"
}
}
}
}
}
}
- 配置嵌套结构dynamic属性
PUT zm_blog5
{
"settings": {
"number_of_replicas": 0
},
"mappings": {
"dynamic":"strict", // 外层
"properties": {
"name": {
"type": "text"
},
"desc":{
"dynamic":true, //独立指定
"properties": {
"simple":{
"type":"text"
},
"complete": {
"type":"text"
}
}
}
}
}
}
网友评论