Spec-Zone.ru › Elasticsearch 7
›Руководство по Elasticsearch [7.17] ›REST API ›API индексов

API создания или обновления шаблона индекса

Создаёт или обновляет шаблон индекса. Шаблоны индексов определяют настройки, сопоставления и псевдонимы, которые могут быть автоматически применены к новым индексам.

PUT /_index_template/template_1
{
  "index_patterns" : ["te*"],
  "priority" : 1,
  "template": {
    "settings" : {
      "number_of_shards" : 2
    }
  }
}

Запрос

PUT /_index_template/<index-template>

Предварительные условия

  • Если включены функции безопасности Elasticsearch, у вас должны быть manage_index_templates или manage права кластера для использования этого API.

Описание

Elasticsearch применяет шаблоны к новым индексам, основываясь на шаблоне с подстановкой, который соответствует имени индекса.

Шаблоны индексов применяются во время создания потоков данных или индексов. Для потоков данных эти настройки и сопоставления применяются при создании базовых индексов потока.

Настройки и сопоставления, указанные в запросе создания индекса, переопределяют любые настройки или сопоставления, указанные в шаблоне индекса.

Изменения в шаблонах индексов не влияют на существующие индексы, включая существующие базовые индексы потока данных.

Комментарии в шаблонах индексов

Вы можете использовать комментарии в стиле C /* */ в шаблонах индексов. Вы можете включать комментарии где угодно в теле запроса, кроме места перед открывающей фигурной скобкой.

Параметры пути

<index-template>
(Обязательно, строка) Имя шаблона индекса для создания.

Параметры запроса

create
(Необязательно, логическое значение) Если true, этот запрос не может заменить или обновить существующие шаблоны индексов. По умолчанию false.
master_timeout
(Необязательно, единицы времени) Период ожидания подключения к мастер-узлу. Если ответ не получен до истечения тайм-аута, запрос завершается с ошибкой. По умолчанию 30s.

Тело запроса

composed_of
(Необязательно, массив строк) Упорядоченный список имён шаблонов компонентов. Шаблоны компонентов объединяются в указанном порядке, что означает, что последний указанный шаблон компонента имеет наивысший приоритет. См. Компоновка нескольких шаблонов компонентов для примера.
data_stream

(Необязательно, объект) Если этот объект включён, шаблон используется для создания потоков данных и их базовых индексов. Поддерживает пустой объект.

Для потоков данных требуется соответствующий шаблон индекса с объектом data_stream. См. создание шаблона индекса.

Свойства data_stream
hidden
(Необязательно, логическое значение) Если true, поток данных скрыт. По умолчанию false.
index_patterns

(Обязательно, массив строк) Массив шаблонов с подстановкой (*) выражений, используемых для сопоставления имён потоков данных и индексов во время создания.

Elasticsearch включает несколько встроенных шаблонов индексов. Чтобы избежать конфликтов имён с этими шаблонами, см. Избегание конфликтов шаблонов имён индексов.

_meta
(Необязательно, объект) Необязательные пользовательские метаданные о шаблоне индекса. Может содержать любые данные. Эта карта не генерируется автоматически Elasticsearch.
priority
(Необязательно, целое число) Приоритет для определения приоритета шаблона индекса при создании нового потока данных или индекса. Шаблон индекса с наивысшим приоритетом выбирается. Если приоритет не указан, шаблон рассматривается как имеющий приоритет 0 (наименьший приоритет). Это число не генерируется автоматически Elasticsearch.
template

(Необязательно, объект) Шаблон для применения. Он может необязательно включать aliases, mappings или settings конфигурацию.

Свойства template
aliases

(Необязательно, объект объектов) Псевдонимы для добавления.

Если шаблон индекса включает объект data_stream, это псевдонимы потоков данных. В противном случае это псевдонимы индексов. Псевдонимы потоков данных игнорируют опции index_routing, routing и search_routing.

Свойства объектов aliases
<alias>

(Обязательно, объект) Ключ — имя псевдонима. Имена псевдонимов индексов поддерживают математику дат.

Тело объекта содержит параметры для псевдонима. Поддерживает пустой объект.

Свойства <alias>
...
...
...

Примеры

Шаблон индекса с псевдонимами индексов

Вы можете включить псевдонимы индексов в шаблон индекса.

PUT _index_template/template_1
{
  "index_patterns" : ["te*"],
  "template": {
    "settings" : {
        "number_of_shards" : 1
    },
    "aliases" : {
        "alias1" : {},
        "alias2" : {
            "filter" : {
                "term" : {"user.id" : "kimchy" }
            },
            "routing" : "shard-1"
        },
        "{index}-alias" : {} 
    }
  }
}

заполнитель {index} в имени псевдонима будет заменён фактическим именем индекса, к которому применяется шаблон, во время создания индекса.

Несколько сопоставляемых шаблонов

Если несколько шаблонов индексов соответствуют имени нового индекса или потока данных, используется шаблон с наивысшим приоритетом. Например:

PUT /_index_template/template_1
{
  "index_patterns" : ["t*"],
  "priority" : 0,
  "template": {
    "settings" : {
      "number_of_shards" : 1,
      "number_of_replicas": 0
    },
    "mappings" : {
      "_source" : { "enabled" : false }
    }
  }
}

PUT /_index_template/template_2
{
  "index_patterns" : ["te*"],
  "priority" : 1,
  "template": {
    "settings" : {
      "number_of_shards" : 2
    },
    "mappings" : {
      "_source" : { "enabled" : true }
    }
  }
}

Для индексов, начинающихся с te*, _source будет включено, и индекс будет иметь два первичных фрагмента и один реплика, потому что только template_2 будет применён.

Несколько шаблонов с перекрывающимися паттернами индексов с одинаковым приоритетом не допускаются, и при попытке создания шаблона, соответствующего существующему шаблону индекса с идентичными приоритетами, будет выброшено сообщение об ошибке.

Версионирование шаблонов

Вы можете использовать параметр version для добавления номера версии к шаблону индекса. Внешние системы могут использовать эти номера версий для упрощения управления шаблонами.

Параметр version является необязательным и не генерируется и не используется Elasticsearch автоматически.

Чтобы сбросить version, замените шаблон, не указывая его.

PUT /_index_template/template_1
{
  "index_patterns" : ["foo", "bar"],
  "priority" : 0,
  "template": {
    "settings" : {
        "number_of_shards" : 1
    }
  },
  "version": 123
}

Чтобы проверить version, вы можете использовать API получения шаблона индекса.

Метаданные шаблона

Вы можете использовать параметр _meta для добавления произвольных метаданных к шаблону индекса. Этот определяемый пользователем объект хранится в состоянии кластера, поэтому желательно сохранять его коротким.

Параметр _meta является необязательным и не генерируется и не используется Elasticsearch автоматически.

Чтобы сбросить _meta, замените шаблон, не указывая его.

PUT /_index_template/template_1
{
  "index_patterns": ["foo", "bar"],
  "template": {
    "settings" : {
        "number_of_shards" : 3
    }
  },
  "_meta": {
    "description": "set number of shards to three",
    "serialization": {
      "class": "MyIndexTemplate",
      "id": 17
    }
  }
}

Чтобы проверить _meta, вы можете использовать API получения шаблона индекса.

Определение потока данных

Для использования шаблона индекса для потоков данных шаблон должен содержать объект data_stream. См. создание шаблона индекса.

PUT /_index_template/template_1
{
  "index_patterns": ["logs-*"],
  "data_stream": { }
}

Компоновка псевдонимов, отображений и настроек

Когда несколько шаблонов компонентов указаны в поле composed_of для шаблона индекса, они объединяются в указанном порядке, что означает, что последующие шаблоны компонентов перезаписывают предыдущие. Любые отображения, настройки или псевдонимы из родительского шаблона индекса объединяются далее. Наконец, любая конфигурация в самом запросе индекса объединяется.

В этом примере порядок двух шаблонов компонентов изменяет количество фрагментов индекса:

PUT /_component_template/template_with_2_shards
{
  "template": {
    "settings": {
      "index.number_of_shards": 2
    }
  }
}

PUT /_component_template/template_with_3_shards
{
  "template": {
    "settings": {
      "index.number_of_shards": 3
    }
  }
}

PUT /_index_template/template_1
{
  "index_patterns": ["t*"],
  "composed_of": ["template_with_2_shards", "template_with_3_shards"]
}

В этом случае индекс, соответствующий t*, будет иметь три первичных фрагмента. Если порядок составленных шаблонов был изменён, индекс имел бы два первичных фрагмента.

Определения отображений объединяются рекурсивно, что означает, что последующие компоненты отображений могут вводить новые отображения полей и обновлять конфигурацию отображения. Если отображение поля уже содержится в более раннем компоненте, его определение будет полностью перезаписано последующим.

Эта рекурсивная стратегия объединения применима не только к отображениям полей, но и к корневым параметрам, таким как dynamic_templates и meta. Если более ранний компонент содержит блок dynamic_templates, то по умолчанию новые записи dynamic_templates добавляются в конец. Если запись уже существует с тем же ключом, то она перезаписывается новым определением.

© 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/7.17/indices-put-template.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API