ES - Index Templates 全局index模板

一、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。

 

參考:

Index Templates

相關文章
相關標籤/搜索