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上 - 区别
-- Index Template可以对索引批量执行而Dynamic Template只能对单索引配置
-- Dynamic Template更作用于字段之上,可以模糊匹配字段名
小结
本章分别较少了Index Template和Dynamic Template的使用