Шаблоны индексов
В этом разделе описываются настраиваемые шаблоны индексов, введённые в Elasticsearch 7.8. Сведения о работе шаблонов индексов в предыдущих версиях см. в документации по старым шаблонам.
Шаблон индекса — это способ указать Elasticsearch, как настроить индекс при его создании. Для потоков данных шаблон индекса настраивает базовые индексы потока при их создании. Шаблоны настраиваются до создания индекса. При создании индекса — вручную или путём индексирования документа — настройки шаблона используются в качестве основы для создания индекса.
Существует два типа шаблонов: шаблоны индексов и шаблоны компонентов. Шаблоны компонентов — это переиспользуемые строительные блоки, которые настраивают отображения, настройки и псевдонимы. Хотя вы можете использовать шаблоны компонентов для построения шаблонов индексов, они не применяются непосредственно к набору индексов. Шаблоны индексов могут содержать набор шаблонов компонентов, а также напрямую указывать настройки, отображения и псевдонимы.
Для шаблонов индексов применяются следующие условия:
- Настраиваемые шаблоны имеют приоритет над старыми шаблонами. Если ни один настраиваемый шаблон не соответствует заданному индексу, может соответствовать и применяться старый шаблон.
- Если индекс создаётся с явными настройками и также соответствует шаблону индекса, настройки из запроса создания индекса имеют приоритет над настройками, указанными в шаблоне индекса и его шаблонах компонентов.
- Настройки, указанные в самом шаблоне индекса, имеют приоритет над настройками в его шаблонах компонентов.
- Если новый поток данных или индекс соответствуют нескольким шаблонам индексов, используется шаблон индекса с наивысшим приоритетом.
Создание шаблона индекса
Используйте API шаблона индекса и шаблона компонента для создания и обновления шаблонов индексов. Вы также можете управлять шаблонами индексов из Stack Management в Kibana.
Следующие запросы создают два шаблона компонентов.
resp = client.cluster.put_component_template(
name="component_template1",
template={
"mappings": {
"properties": {
"@timestamp": {
"type": "date"
}
}
}
},
)
print(resp)
resp1 = client.cluster.put_component_template(
name="runtime_component_template",
template={
"mappings": {
"runtime": {
"day_of_week": {
"type": "keyword",
"script": {
"source": "emit(doc['@timestamp'].value.dayOfWeekEnum.getDisplayName(TextStyle.FULL, Locale.ENGLISH))"
}
}
}
}
},
)
print(resp1) const response = await client.cluster.putComponentTemplate({
name: "component_template1",
template: {
mappings: {
properties: {
"@timestamp": {
type: "date",
},
},
},
},
});
console.log(response);
const response1 = await client.cluster.putComponentTemplate({
name: "runtime_component_template",
template: {
mappings: {
runtime: {
day_of_week: {
type: "keyword",
script: {
source:
"emit(doc['@timestamp'].value.dayOfWeekEnum.getDisplayName(TextStyle.FULL, Locale.ENGLISH))",
},
},
},
},
},
});
console.log(response1); 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.ENGLISH))"
}
}
}
}
}
} | Этот шаблон компонента добавляет поле runtime с именем |
Следующий запрос создаёт шаблон индекса, который составлен из этих шаблонов компонентов.
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"
}
}
},
"aliases": {
"mydata": { }
}
},
"priority": 500,
"composed_of": ["component_template1", "runtime_component_template"],
"version": 3,
"_meta": {
"description": "my custom"
}
}
© 2023-2025 Elasticsearch
As of September 2024, Elasticsearch is available under a choice of three licenses: the Server Side Public License (SSPL), the Elastic License, or the AGPLv3 (OSI approved).
Elasticsearch and the Elasticsearch logo are trademarks of Elasticsearch B.V., registered in the U.S. and in other countries.
https://www.elastic.co/guide/en/elasticsearch/reference/8.17/index-templates.html