Spec-Zone.ru › Elasticsearch 8
›Elasticsearch Guide [8.17] ›REST API ›API индексов

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

Новая справка по 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"
        }
      }
    }
  }
}

Запрос

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
  • metrics@tsdb-settings
  • synthetics@mapping
  • synthetics@settings

Elastic Agent использует эти шаблоны для настройки базовых индексов для своих потоков данных. Если вы хотите настроить эти шаблоны, не переопределяйте их, так как они могут быть сброшены после обновления. Вместо этого, найдите шаблон компонента *@custom в разделе composed_of управляемого шаблона индекса. Эти пользовательские шаблоны компонентов позволяют настраивать сопоставления управляемых шаблонов индексов без необходимости переопределения управляемых шаблонов индексов или шаблонов компонентов. Обратите внимание, что пользовательские шаблоны компонентов могут еще не существовать. После их создания с помощью API создания или обновления шаблона компонента, они будут взяты шаблоном индекса. См. Изменение сопоставлений и настроек для потока данных, как применить изменения к соответствующему потоку данных.

Чтобы избежать конфликтов имен со встроенными и управляемыми шаблонами компонентов Fleet, избегайте использования @ в качестве части имен собственных шаблонов компонентов. Исключение составляют шаблоны компонентов *@custom, которые позволяют безопасно настраивать управляемые шаблоны индексов.

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

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

Тело запроса

template

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

Свойства template
aliases

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

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

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

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

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

Свойства <alias>
filter
(Необязательно, объект 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.
deprecated
(Необязательно, логическое значение) Помечает этот шаблон компонента как устаревший. Когда устаревший шаблон компонента используется при создании или обновлении не устаревшего шаблона индекса, Elasticsearch выведет предупреждение об устаревании. end::template[]

Примеры

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

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

resp = client.cluster.put_component_template(
    name="template_1",
    template={
        "settings": {
            "number_of_shards": 1
        },
        "aliases": {
            "alias1": {},
            "alias2": {
                "filter": {
                    "term": {
                        "user.id": "kimchy"
                    }
                },
                "routing": "shard-1"
            },
            "{index}-alias": {}
        }
    },
)
print(resp)
response = client.cluster.put_component_template(
  name: 'template_1',
  body: {
    template: {
      settings: {
        number_of_shards: 1
      },
      aliases: {
        "alias1": {},
        "alias2": {
          filter: {
            term: {
              'user.id' => 'kimchy'
            }
          },
          routing: 'shard-1'
        },
        "{index}-alias": {}
      }
    }
  }
)
puts response
const response = await client.cluster.putComponentTemplate({
  name: "template_1",
  template: {
    settings: {
      number_of_shards: 1,
    },
    aliases: {
      alias1: {},
      alias2: {
        filter: {
          term: {
            "user.id": "kimchy",
          },
        },
        routing: "shard-1",
      },
      "{index}-alias": {},
    },
  },
});
console.log(response);
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, замените шаблон, не указывая его.

resp = client.cluster.put_component_template(
    name="template_1",
    template={
        "settings": {
            "number_of_shards": 1
        }
    },
    version=123,
)
print(resp)
response = client.cluster.put_component_template(
  name: 'template_1',
  body: {
    template: {
      settings: {
        number_of_shards: 1
      }
    },
    version: 123
  }
)
puts response
const response = await client.cluster.putComponentTemplate({
  name: "template_1",
  template: {
    settings: {
      number_of_shards: 1,
    },
  },
  version: 123,
});
console.log(response);
PUT /_component_template/template_1
{
  "template": {
    "settings" : {
        "number_of_shards" : 1
    }
  },
  "version": 123
}

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

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

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

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

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

resp = client.cluster.put_component_template(
    name="template_1",
    template={
        "settings": {
            "number_of_shards": 1
        }
    },
    meta={
        "description": "set number of shards to one",
        "serialization": {
            "class": "MyComponentTemplate",
            "id": 10
        }
    },
)
print(resp)
response = client.cluster.put_component_template(
  name: 'template_1',
  body: {
    template: {
      settings: {
        number_of_shards: 1
      }
    },
    _meta: {
      description: 'set number of shards to one',
      serialization: {
        class: 'MyComponentTemplate',
        id: 10
      }
    }
  }
)
puts response
const response = await client.cluster.putComponentTemplate({
  name: "template_1",
  template: {
    settings: {
      number_of_shards: 1,
    },
  },
  _meta: {
    description: "set number of shards to one",
    serialization: {
      class: "MyComponentTemplate",
      id: 10,
    },
  },
});
console.log(response);
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/8.17/indices-component-template.html

Spec-Zone.ru

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