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

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

Создаёт или обновляет шаблон компонента. Шаблоны компонентов — это строительные блоки для создания шаблонов индексов, которые определяют отображения индекса, параметры и псевдонимы.

PUT _component_template/template_1
{
  "template": {
    "settings": {
      "number_of_shards": 1
    },
    "mappings": {
      "_source": {
        "enabled": false
      },
      "properties": {
        "host_name": {
          "type": "keyword"
        },
        "created_at": {
          "type": "date",
          "format": "EEE MMM dd HH:mm:ss Z yyyy"
        }
      }
    }
  }
}

Запрос

PUT /_component_template/<component-template>

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

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

Описание

Шаблон индекса может состоять из нескольких шаблонов компонентов. Для использования шаблона компонента укажите его в списке composed_of шаблона индекса. Шаблоны компонентов применяются только к новым потокам данных и индексам в рамках сопоставляемого шаблона индекса.

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

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

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

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

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

<component-template>

(Обязательно, строка) Имя шаблона компонента для создания.

Elasticsearch включает следующие встроенные шаблоны компонентов:

  • logs-mappings
  • logs-settings
  • metrics-mappings
  • metrics-settings
  • synthetics-mapping
  • synthetics-settings

Elastic Agent использует эти шаблоны для настройки базовых индексов для своих потоков данных. Если вы используете Elastic Agent и хотите переопределить один из этих шаблонов, установите version для вашего шаблона замены выше текущей версии.

Если вы не используете Elastic Agent и хотите отключить все встроенные шаблоны компонентов и индексов, установите stack.templates.enabled в значение false с помощью API обновления параметров кластера.

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

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

Тело запроса

template

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

Свойства template
aliases

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

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

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

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

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

Свойства <alias>
filter
(Необязательно, объект Query DSL) Запрос, используемый для ограничения документов, к которым может получить доступ псевдоним.
index_routing
(Необязательно, строка) Значение, используемое для маршрутизации операций индексирования на конкретный фрагмент. Если указано, это значение переопределяет routing для операций индексирования.
is_hidden
(Необязательно, Булево) Если true, псевдоним скрыт. По умолчанию false. Все индексы для псевдонима должны иметь одинаковое значение is_hidden.
is_write_index
(Необязательно, Булево) Если true, индекс является индексом записи для псевдонима. По умолчанию false.
routing
(Необязательно, строка) Значение, используемое для маршрутизации операций индексирования и поиска на конкретный фрагмент.
search_routing
(Необязательно, строка) Значение, используемое для маршрутизации операций поиска на конкретный фрагмент. Если указано, это значение переопределяет routing для операций поиска.
mappings

(Необязательно, объект отображения) Отображение для полей в индексе. Если указано, это отображение может включать:

  • Имена полей
  • Типы данных полей
  • Параметры отображения

См. Отображение.

settings
(Необязательно, объект настроек индекса) Параметры конфигурации индекса. См. Параметры индекса.
version
(Необязательно, целое число) Номер версии, используемый для управления шаблонами компонентов внешним образом. Это число не генерируется или не увеличивается автоматически Elasticsearch.
allow_auto_create
(Необязательно, булево) Этот параметр переопределяет значение параметра кластера action.auto_create_index. Если установлен в значение true в шаблоне, то индексы могут быть автоматически созданы с использованием этого шаблона, даже если автоматическое создание индексов отключено с помощью actions.auto_create_index. Если установлен в значение false, то индексы или потоки данных, соответствующие шаблону, всегда должны быть созданы явно и никогда не могут быть созданы автоматически.
_meta
(Необязательно, объект) Необязательные пользовательские метаданные о шаблоне компонента. Может содержать любые данные. Эта карта не генерируется автоматически Elasticsearch.

Примеры

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

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

PUT _component_template/template_1
{
  "template": {
    "settings" : {
        "number_of_shards" : 1
    },
    "aliases" : {
        "alias1" : {},
        "alias2" : {
            "filter" : {
                "term" : {"user.id" : "kimchy" }
            },
            "routing" : "shard-1"
        },
        "{index}-alias" : {} 
    }
  }
}

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

Применение шаблонов компонентов

Вы не можете напрямую применить шаблон компонента к потоку данных или индексу. Для применения шаблон компонента должен быть включён в список composed_of шаблона индекса. См. шаблоны индексов.

Версионирование шаблонов компонентов

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

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

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

PUT /_component_template/template_1
{
  "template": {
    "settings" : {
        "number_of_shards" : 1
    }
  },
  "version": 123
}

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

Метаданные шаблона компонента

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

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

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

PUT /_component_template/template_1
{
  "template": {
    "settings" : {
        "number_of_shards" : 1
    }
  },
  "_meta": {
    "description": "set number of shards to one",
    "serialization": {
      "class": "MyComponentTemplate",
      "id": 10
    }
  }
}

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

© 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-component-template.html

Spec-Zone.ru

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