搜索引擎

ES 中Index Template和Dynamic Templ

2020-04-17  本文已影响0人  7赢月

介绍

本章会介绍两种Template类型以及使用。

Index Template

用于帮助设置Mapping和Setting。并按照一定的规则,自动匹配覆盖新创建的索引之上
有以下三点需要注意:
-- 改模板仅在一个索引重新被创建的时候才会生效。不会修改之前创建的索引
-- 可以设置多个模板,多个模板最终会执照“order”被merge起来
-- merge的顺序依照模板中order的顺序,数字越大,优先级越高

从以上我们也可以看出,es先使用默认的setting和mapping,然后通过order进行template的merge,之后创建,产生新的setting和mapping。
我们看下如下的例子:

PUT /_template/template_test
{
    "index_patterns" : ["test*"],
    "order" : 1,
    "settings" : {
        "number_of_shards": 1,
        "number_of_replicas" : 2
    },
    "mappings" : {
        "date_detection": false,
        "numeric_detection": true
    }
}

如上我们可以看到,设置一个匹配test开头的索引,命中改策略的索引中,设置主分片数量为1,设置副分片数量为2;关闭对date的默认识别的;开启对数字的识别。


返回结果

Dynamic Template

根据es识别的数据类型,结合字段名称,来动态设定字段类型。
我们可以利用Dynamic Template做出
-- 所有字符创类型都设定成Keyword类型,或者关闭Keyword
-- is开头的地段都设置成boolean
-- long_开头的都设置成long类型

PUT my_index
{
  "mappings": {
    "dynamic_templates": [
            {
        "strings_as_boolean": {
          "match_mapping_type":"string",
          "match":"is*",
          "mapping": {
            "type": "boolean"
          }
        }
      },
      {
        "strings_as_keywords": {
          "match_mapping_type":   "string",
          "mapping": {
            "type": "keyword"
          }
        }
      }
    ]
  }
}

如上的例子设置Dynamic Template

比较

通过以上的两个模板的介绍和使用,我们可以发现

小结

本章分别较少了Index Template和Dynamic Template的使用

上一篇 下一篇

猜你喜欢

热点阅读