API создания или обновления шаблона индекса
Данная документация посвящена устаревшим шаблонам индексов, которые устарели и будут заменены составными шаблонами, представленными в Elasticsearch 7.8. Для получения информации о составных шаблонах см. Шаблоны индексов.
Создаёт или обновляет шаблон индекса.
PUT _template/template_1
{
"index_patterns": ["te*", "bar*"],
"settings": {
"number_of_shards": 1
},
"mappings": {
"_source": {
"enabled": false
},
"properties": {
"host_name": {
"type": "keyword"
},
"created_at": {
"type": "date"
}
}
}
} Запрос
PUT /_template/<index-template>
Предварительные условия
- Если функции безопасности Elasticsearch включены, у вас должны быть права
manage_index_templatesилиmanageкластера для использования данного API.
Описание
Шаблоны индексов определяют настройки и отображения, которые можно автоматически применять при создании новых индексов. Elasticsearch применяет шаблоны к новым индексам на основе шаблона имени индекса.
Составные шаблоны всегда имеют приоритет над устаревшими шаблонами. Если ни один составной шаблон не соответствует новому индексу, применяются соответствующие устаревшие шаблоны в соответствии с их порядком.
Шаблоны индексов применяются только при создании индекса. Изменения шаблонов индексов не влияют на существующие индексы. Настройки и отображения, указанные в запросах API создания индекса, переопределяют любые настройки или отображения, указанные в шаблоне индекса.
Комментарии в шаблонах индексов
Вы можете использовать комментарии в блоках /* */ в стиле C в шаблонах индексов. Вы можете вставлять комментарии в любом месте тела запроса, кроме места перед открывающей фигурной скобкой.
Получение шаблонов
Параметры пути
-
<index-template> - (Обязательно, строка) Имя шаблона индекса, который нужно создать.
Параметры запроса
-
create - (Необязательно, булево) Если
true, данный запрос не может заменить или обновить существующие шаблоны индексов. По умолчаниюfalse. -
order -
(Необязательно, целое число) Порядок, в котором Elasticsearch применяет этот шаблон, если индекс соответствует нескольким шаблонам.
Шаблоны с меньшими значениями
orderобъединяются в первую очередь. Шаблоны с более высокими значениямиorderобъединяются позже, переопределяя шаблоны с меньшими значениями. -
master_timeout - (Необязательно, единицы времени) Период ожидания узла master. Если узел master недоступен до истечения срока ожидания, запрос завершается ошибкой. По умолчанию
30s. Также можно установить значение-1, чтобы указать, что запрос никогда не должен вызывать таймаут.
Тело запроса
-
index_patterns - (Обязательно, массив строк) Массив шаблонов с подстановочными знаками, используемых для соответствия именам индексов во время создания.
-
aliases -
(Необязательно, объект объектов) Псевдонимы для индекса.
Свойства объектов
aliases-
<alias> -
(Обязательно, объект) Ключ - это имя псевдонима. Имена псевдонимов индексов поддерживают математику дат.
Тело объекта содержит параметры для псевдонима. Поддерживает пустой объект.
Свойства объектов
<alias>-
filter - (Необязательно, объект запроса
filter) Запрос, используемый для ограничения документов, к которым может получить доступ псевдоним. -
index_routing - (Необязательно, строка) Значение, используемое для маршрутизации операций индексирования на определённый фрагмент. При указании этого значения переопределяется значение
routingдля операций индексирования. -
is_hidden - (Необязательно, булево) Если
true, псевдоним скрыт. По умолчаниюfalse. Все индексы для псевдонима должны иметь одинаковое значениеis_hidden. -
is_write_index - (Необязательно, булево) Если
true, индекс является индексом записи для псевдонима. По умолчаниюfalse. -
routing - (Необязательно, строка) Значение, используемое для маршрутизации операций индексирования и поиска на определённый фрагмент.
-
search_routing - (Необязательно, строка) Значение, используемое для маршрутизации операций поиска на определённый фрагмент. При указании этого значения переопределяется значение
routingдля операций поиска.
-
-
-
mappings -
(Необязательно, объект отображения) Отображение полей в индексе. При указании отображения оно может содержать:
- Названия полей
- Типы данных полей
- Параметры отображения
См. Отображение.
-
settings - (Необязательно, объект настроек индекса) Параметры конфигурации для индекса. См. Настройки индекса.
-
version - (Необязательно, целое число) Номер версии, используемый для управления шаблонами индексов вне Elasticsearch. Этот номер не генерируется автоматически Elasticsearch.
Примеры
Шаблон индекса с псевдонимами индексов
Вы можете включить псевдонимы индексов в шаблон индекса.
resp = client.indices.put_template(
name="template_1",
index_patterns=[
"te*"
],
settings={
"number_of_shards": 1
},
aliases={
"alias1": {},
"alias2": {
"filter": {
"term": {
"user.id": "kimchy"
}
},
"routing": "shard-1"
},
"{index}-alias": {}
},
)
print(resp) const response = await client.indices.putTemplate({
name: "template_1",
index_patterns: ["te*"],
settings: {
number_of_shards: 1,
},
aliases: {
alias1: {},
alias2: {
filter: {
term: {
"user.id": "kimchy",
},
},
routing: "shard-1",
},
"{index}-alias": {},
},
});
console.log(response); PUT _template/template_1
{
"index_patterns" : ["te*"],
"settings" : {
"number_of_shards" : 1
},
"aliases" : {
"alias1" : {},
"alias2" : {
"filter" : {
"term" : {"user.id" : "kimchy" }
},
"routing" : "shard-1"
},
"{index}-alias" : {}
}
} | заполнитель |
Индексы, соответствующие нескольким шаблонам
Несколько шаблонов индексов могут потенциально соответствовать индексу, в этом случае и настройки, и отображения объединяются в окончательную конфигурацию индекса. Порядок слияния можно контролировать с помощью параметра order, где более низкий порядок применяется первым, а более высокий порядок переопределяет его. Например:
resp = client.indices.put_template(
name="template_1",
index_patterns=[
"te*"
],
order=0,
settings={
"number_of_shards": 1
},
mappings={
"_source": {
"enabled": False
}
},
)
print(resp)
resp1 = client.indices.put_template(
name="template_2",
index_patterns=[
"tes*"
],
order=1,
settings={
"number_of_shards": 1
},
mappings={
"_source": {
"enabled": True
}
},
)
print(resp1) const response = await client.indices.putTemplate({
name: "template_1",
index_patterns: ["te*"],
order: 0,
settings: {
number_of_shards: 1,
},
mappings: {
_source: {
enabled: false,
},
},
});
console.log(response);
const response1 = await client.indices.putTemplate({
name: "template_2",
index_patterns: ["tes*"],
order: 1,
settings: {
number_of_shards: 1,
},
mappings: {
_source: {
enabled: true,
},
},
});
console.log(response1); PUT /_template/template_1
{
"index_patterns" : ["te*"],
"order" : 0,
"settings" : {
"number_of_shards" : 1
},
"mappings" : {
"_source" : { "enabled" : false }
}
}
PUT /_template/template_2
{
"index_patterns" : ["tes*"],
"order" : 1,
"settings" : {
"number_of_shards" : 1
},
"mappings" : {
"_source" : { "enabled" : true }
}
} Вышеприведённый пример отключит сохранение _source, но для индексов, начинающихся с tes*, _source всё ещё будет включено. Обратите внимание, что для отображений слияние является «глубоким», что означает, что определённые отображения, основанные на объектах/свойствах, могут легко быть добавлены/переопределены в шаблонах более высокого порядка, с шаблонами более низкого порядка, предоставляющими основу.
Несколько соответствующих шаблонов с одинаковым значением порядка приведут к не-детерминированному порядку слияния.
Версионирование шаблонов
Вы можете использовать параметр version для добавления необязательного номера версии к шаблону индекса. Внешние системы могут использовать эти номера версий для упрощения управления шаблонами.
Параметр version полностью необязателен и не генерируется автоматически Elasticsearch.
Чтобы сбросить version, замените шаблон, не указывая его.
resp = client.indices.put_template(
name="template_1",
index_patterns=[
"my-index-*"
],
order=0,
settings={
"number_of_shards": 1
},
version=123,
)
print(resp) response = client.indices.put_template(
name: 'template_1',
body: {
index_patterns: [
'my-index-*'
],
order: 0,
settings: {
number_of_shards: 1
},
version: 123
}
)
puts response const response = await client.indices.putTemplate({
name: "template_1",
index_patterns: ["my-index-*"],
order: 0,
settings: {
number_of_shards: 1,
},
version: 123,
});
console.log(response); PUT /_template/template_1
{
"index_patterns" : ["my-index-*"],
"order" : 0,
"settings" : {
"number_of_shards" : 1
},
"version": 123
} Для проверки version вы можете использовать API получения шаблона индекса с параметром запроса filter_path для возвращения только номера версии:
$params = [
'name' => 'template_1',
];
$response = $client->indices()->getTemplate($params); resp = client.indices.get_template(
name="template_1",
filter_path="*.version",
)
print(resp) response = client.indices.get_template( name: 'template_1', filter_path: '*.version' ) puts response
const response = await client.indices.getTemplate({
name: "template_1",
filter_path: "*.version",
});
console.log(response); GET /_template/template_1?filter_path=*.version
API возвращает следующий ответ:
{
"template_1" : {
"version" : 123
}
}
© 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/indices-templates-v1.html