Index templates 有2種:
component templates 可重用的建構塊,用于配置settings, mappings, and aliases。雖然可以使用元件模闆構造索引模闆,但它們不會直接應用于一組索引。
Index templates 索引模闆可以包含component templates的集合,也可以直接指定settings, mappings, and aliases。
以下條件适用于 index templates:
- Composable templates 優先于 legacy templates(舊的模闆方式). 如果沒有composable template比對, legacy template 将被應用.
- 如果index的settings是配置了的,那麼settings的優先級高于index template 和 component templates.
- 如果一個新的data stream 或 index 可以比對多個index template, 将選擇優先級最高的index template.
Elasticsearch内置了以下模闆,他們用于Elasticsearch自身,優先級是100:
logs-*-*
metrics-*-*
synthetics-*-*
為了避免沖突,最好把自定義的模闆跟内置模闆的命名區分開。
以下建立2個component templates
PUT _component_template/component_template1
{
"template": {
"mappings": {
"properties": {
"@timestamp": {
"type": "date"
}
}
}
}
}
PUT _component_template/runtime_component_template
{
"template": {
"mappings": {
"runtime": {
"day_of_week": {
"type": "keyword",
"script": {
"source": "emit(doc['@timestamp'].value.dayOfWeekEnum.getDisplayName(TextStyle.FULL, Locale.ROOT))"
}
}
}
}
}
}
以下建立Index templates 并把component_template1, runtime_component_template作為元件
PUT _index_template/template_1
{
"index_patterns": ["te*", "bar*"],
"template": {
"settings": {
"number_of_shards": 1
},
"mappings": {
"_source": {
"enabled": true
},
"properties": {
"host_name": {
"type": "keyword"
},
"created_at": {
"type": "date",
"format": "EEE MMM dd HH:mm:ss Z yyyy"
}
}
},
"aliases": {
"mydata": { }
}
},
"priority": 500,
"composed_of": ["component_template1", "runtime_component_template"],
"version": 3,
"_meta": {
"description": "my custom"
}
}