zoukankan      html  css  js  c++  java
  • elasticsearch 动态映射

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

    PUT /my_index
    {
        "mappings": {
            "my_type": {
                "dynamic":      "strict",
                "properties": {
                    "title":  { "type": "string"},
                    "stash":  {
                        "type":     "object",
                        "dynamic":  true 
                    }
                }
            }
        }
    }


    如果遇到新字段,对象 my_type 就会抛出异常。而内部对象 stash 遇到新字段就会动态创建新字段。
    使用上述动态映射, 你可以给 stash 对象添加新的可检索的字段:

    PUT /my_index/my_type/1
    {
        "title":   "This doc adds a new field",
        "stash": { "new_field": "Success!" }
    }

    但是对根节点对象 my_type 进行同样的操作会失败:

    PUT /my_index/my_type/1
    {
        "title":     "This throws a StrictDynamicMappingException",
        "new_field": "Fail!"
    }

    把 dynamic 设置为 false 一点儿也不会改变 _source 的字段内容。 _source 仍然包含被索引的整个JSON文档。只是新的字段不会被加到映射中也不可搜索。

    缺省映射
    通常,一个索引中的所有类型共享相同的字段和设置。 _default_ 映射更加方便地指定通用设置,而不是每次创建新类型时都要重复设置。 _default_ 映射是新类型的模板。在设置 _default_ 映射之后创建的所有类型都将应用这些缺省的设置,除非类型在自己的映射中明确覆盖这些设置。
    例如,我们可以使用 _default_ 映射为所有的类型禁用 _all 字段, 而只在 blog 类型启用:

    PUT /my_index
    {
        "mappings": {
            "_default_": {
                "_all": { "enabled":  false }
            },
            "blog": {
                "_all": { "enabled":  true  }
            }
        }
    }
  • 相关阅读:
    TCP Socket服务器编程[转文]
    http协议学习和总结系列[转 ]
    linux C函数大全
    HTTP 协议详解
    Pthread 多线程总结
    linux 中解析命令行参数 (getopt_long用法)
    微软企业库4.1学习笔记(十八)缓存模块6 缓存的设计目的
    微软企业库4.1学习笔记(十七)缓存模块5 缓存的典型用法
    进程和线程的区别
    C#二叉树遍历算法实现浅析
  • 原文地址:https://www.cnblogs.com/gavinYang/p/11200205.html
Copyright © 2011-2022 走看看