一、Index Templateshtml
以前咱们聊过Dynamic template,它做用范围是特定的Index,若是咱们想针对全局Index进行设置该如何操做呢?app
Index Templates 能够定义一些模板,新建立index的时候会自动应用相应的模板。elasticsearch
Index templates allow you to define templates that will automatically be applied when new indices are created. ide
PUT _template/template_1
{
"index_patterns": ["te*", "bar*"],
"settings": {
"number_of_shards": 1
},
"mappings": {
"type1": {
"_source": {
"enabled": false
},
"properties": {
"host_name": {
"type": "keyword"
},
"created_at": {
"type": "date",
"format": "EEE MMM dd HH:mm:ss Z YYYY"
}
}
}
}
}
1)模板匹配规则ui
"index_patterns": ["te*", "bar*"],以te、bar开头的index都会应用到这个模板。spa
2)settingscode
index的一些属性设置,例如:分片数量。orm
3)mappingshtm
field mapping,能够结合Dynamic template进行设置。blog
二、匹配到多个模板如何处理?
若是index匹配上了多个模板,那么这些模板的settings和mappings会被合并在一块儿。若是出现相同的配置项,会根据order的顺序进行覆盖(order大的覆盖小的)。
例如:
PUT /_template/template_1
{
"index_patterns" : ["*"],
"order" : 0,
"settings" : {
"number_of_shards" : 1
},
"mappings" : {
"type1" : {
"_source" : { "enabled" : false }
}
}
}
PUT /_template/template_2
{
"index_patterns" : ["te*"],
"order" : 1,
"settings" : {
"number_of_shards" : 1
},
"mappings" : {
"type1" : {
"_source" : { "enabled" : true }
}
}
}
在上面的例子中,定义了两个template。template_1中order=0,_source enabled=false;template_2中order=1,_source enabled=true。
若是新建立的index名字不以te开头,则匹配上template_1,_source enabled=false。
若是新建立的index名字以te开头,则同时匹配上template_一、template_2,因为template_2中order大,所以_source enabled=true。
参考: