ES mapping 的 dynamic 属性

2022-11-23  本文已影响0人  zhimin_

es 版本:7.6

dynamic 属性是用来配置,当写入的时候出现新字段时候的行为。有 truefalsestrict 三种。

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 配置,以配置的为准。

  1. 未配置嵌套结构dynamic属性
PUT zm_blog4
{
  "settings": {
    "number_of_replicas": 0
  }, 
  "mappings": {
    "dynamic":"strict", // 外层指定
    "properties": {
      "name": {
        "type": "text"
      },
      "desc":{
        "properties": {
          "simple":{
            "type":"text"
          },
          "complete": {
            "type":"text"
          }
        }
      }
    }
  }
}
  1. 配置嵌套结构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"
          }
        }
      }
    }
  }
}
上一篇下一篇

猜你喜欢

热点阅读