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" } }