美文网首页
ES mapping 的 dynamic 属性

ES mapping 的 dynamic 属性

作者: zhimin_ | 来源:发表于2022-11-23 23:51 被阅读0次

    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"
              }
            }
          }
        }
      }
    }
    

    相关文章

      网友评论

          本文标题:ES mapping 的 dynamic 属性

          本文链接:https://www.haomeiwen.com/subject/rhuaxdtx.html