一、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。
參考: