美文网首页ELK漫漫之路
elasticsearch 动态映射

elasticsearch 动态映射

作者: 续哥儿 | 来源:发表于2018-07-18 16:12 被阅读0次

    一般情况下我感觉很少用单纯的动态映射,除非业务简单。一般也是用动态映射模板和静态映射。
    默认情况下动态映射是打开的,可以通过设置索引参数为false(忽略新field)或者strict(遇到未知field抛出异常~嗯-官方是这么写的)
    通过_settings去获取默认的配置
    GET /index(可缺省)/_settings(缺省的话默认是全部的index)

    {
      "xx-2018.06.23": {
        "settings": {
          "index": {
            "creation_date": "1531274469467",
            "number_of_shards": "5",
            "number_of_replicas": "1",
            "uuid": "TrIbNCbPSe2Jq86FN0QScw",
            "version": {
              "created": "6030099"
            },
            "provided_name": "xx-2018.06.23"
          }
        }
      }
    

    好吧,好像看起来没啥东西~~!
    有些书上写的_default_,已经在6.0.x上删除~没有意义

    如果启用了date_detection(默认),那么将检查新的字符串字段,看看它们的内容是否与dynamic_date_format中指定的任何日期模式匹配。如果找到匹配项,则添加一个具有相应格式的新日期字段默认格式是这样的
    当然是6.3版本的~
    [ "strict_date_optional_time","yyyy/MM/dd HH:mm:ss Z||yyyy/MM/dd Z"]
    贴出官方示例

    PUT my_index/_doc/1
    {
      "create_date": "2015/09/02"
    }
    
    GET my_index/_mapping
    结果
    {
      "my_index": {
        "mappings": {
          "_doc": {
            "properties": {
              "create_date": {
                "type": "date",
                "format": "yyyy/MM/dd HH:mm:ss||yyyy/MM/dd||epoch_millis"
              }
            }
          }
        }
      }
    }
    

    禁用日期检查

    PUT my_index
    {
      "mappings": {
        "_doc": {
          "date_detection": false
        }
      }
    }
    
    
    PUT my_index/_doc/1 
    {
      "create": "2015/09/02"
    }
    
    
    GET my_index/_mapping
    结果
    {
      "my_index": {
        "mappings": {
          "_doc": {
            "date_detection": false,
            "properties": {
              "create": {
                "type": "text",
                "fields": {
                  "keyword": {
                    "type": "keyword",
                    "ignore_above": 256
                  }
                }
              }
            }
          }
        }
      }
    }
    

    已经变成了text格式了

    修改动态映射日期的格式

    PUT my_index
    {
      "mappings": {
        "_doc": {
          "dynamic_date_formats": ["yyyy-MM-dd HH:mm:ss"]
        }
      }
    }
    
    
    PUT my_index/_doc/1 
    {
      "create": "2018-07-16 12:11:00"
    }
    
    
    GET my_index/_mapping
    

    对于数字的动态映射检查是关闭的(OK ,附上官方示例)

    PUT my_index
    {
      "mappings": {
        "_doc": {
          "numeric_detection": true
        }
      }
    }
    
    PUT my_index/_doc/1
    {
      "my_float":   "1.0", 
      "my_integer": "1" 
    }
    

    相关文章

      网友评论

        本文标题:elasticsearch 动态映射

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