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

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

Новая справка по API

Для получения самых актуальных данных об API обратитесь к API индексов.

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

resp = client.indices.simulate_template(
    name="template_1",
)
print(resp)
const response = await client.indices.simulateTemplate({
  name: "template_1",
});
console.log(response);
POST /_index_template/_simulate/template_1

Запрос

POST /_index_template/_simulate/<index-template>

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

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

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

<index-template>
(Необязательно, строка) Название шаблона индекса для моделирования. Чтобы протестировать конфигурацию шаблона перед добавлением его в кластер, опустите этот параметр и укажите конфигурацию шаблона в теле запроса.

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

create
(Необязательно, Булево) Если true, шаблон, переданный в теле, используется только если ни один существующий шаблон не соответствует тем же шаблонам индексов. Если false, для моделирования используется шаблон с наивысшим приоритетом. Обратите внимание, что шаблон не добавляется или обновляется в обоих случаях постоянно; он используется только для моделирования. По умолчанию значение false.
master_timeout
(Необязательно, единицы времени) Период ожидания узла мастера. Если узел мастера недоступен до истечения времени ожидания, запрос завершается ошибкой и возвращается сообщение об ошибке. По умолчанию 30s. Также может быть установлено значение -1, чтобы указать, что запрос никогда не должен истекать.
include_defaults
(Необязательно, Булево) Функциональность в [предварительный просмотр] Эта функциональность находится на стадии технического предварительного просмотра и может быть изменена или удалена в будущих выпусках. Elastic будет работать над исправлением любых проблем, но функции технического предварительного просмотра не подпадают под SLA поддержки официальных функций GA. . Если true, в ответ возвращаются все значения по умолчанию. По умолчанию false.

Тело запроса

data_stream

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

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

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

(Необязательно, строка) Тип создаваемого потока данных. Допустимые значения: null (стандартный поток данных), time_series (поток данных временных рядов) и logsdb (поток данных журналов).

Шаблон index_mode устанавливает index.mode базового индекса.

index_patterns

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

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

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

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

Свойства template
aliases

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

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

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

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

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

Свойства <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.
deprecated
(Необязательно, булево) Помечает этот шаблон индекса как устаревший. При создании или обновлении не устаревшего шаблона индекса, использующего устаревшие компоненты, Elasticsearch выведет предупреждение об устаревании.

Тело ответа

overlapping

(массив) Любые шаблоны, которые были заменены указанным шаблоном.

Свойства overlapping
index_patterns
(массив) Шаблоны индексов, к которым применяется заменённый шаблон.
name
(строка) Название заменённого шаблона.
template

(объект) Настройки, отображения и псевдонимы, которые будут применены к соответствующим индексам.

Свойства template
aliases

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

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

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

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

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

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

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

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

settings
(Необязательно, объект настроек индекса) Параметры конфигурации для индекса. См. Настройки индекса.

Примеры

Моделирование существующего шаблона

В следующем примере создаётся и моделируется составной шаблон:

resp = client.cluster.put_component_template(
    name="ct1",
    template={
        "settings": {
            "index.number_of_shards": 2
        }
    },
)
print(resp)

resp1 = client.cluster.put_component_template(
    name="ct2",
    template={
        "settings": {
            "index.number_of_replicas": 0
        },
        "mappings": {
            "properties": {
                "@timestamp": {
                    "type": "date"
                }
            }
        }
    },
)
print(resp1)

resp2 = client.indices.put_index_template(
    name="final-template",
    index_patterns=[
        "my-index-*"
    ],
    composed_of=[
        "ct1",
        "ct2"
    ],
    priority=5,
)
print(resp2)

resp3 = client.indices.simulate_template(
    name="final-template",
)
print(resp3)
response = client.cluster.put_component_template(
  name: 'ct1',
  body: {
    template: {
      settings: {
        'index.number_of_shards' => 2
      }
    }
  }
)
puts response

response = client.cluster.put_component_template(
  name: 'ct2',
  body: {
    template: {
      settings: {
        'index.number_of_replicas' => 0
      },
      mappings: {
        properties: {
          "@timestamp": {
            type: 'date'
          }
        }
      }
    }
  }
)
puts response

response = client.indices.put_index_template(
  name: 'final-template',
  body: {
    index_patterns: [
      'my-index-*'
    ],
    composed_of: [
      'ct1',
      'ct2'
    ],
    priority: 5
  }
)
puts response

response = client.indices.simulate_template(
  name: 'final-template'
)
puts response
const response = await client.cluster.putComponentTemplate({
  name: "ct1",
  template: {
    settings: {
      "index.number_of_shards": 2,
    },
  },
});
console.log(response);

const response1 = await client.cluster.putComponentTemplate({
  name: "ct2",
  template: {
    settings: {
      "index.number_of_replicas": 0,
    },
    mappings: {
      properties: {
        "@timestamp": {
          type: "date",
        },
      },
    },
  },
});
console.log(response1);

const response2 = await client.indices.putIndexTemplate({
  name: "final-template",
  index_patterns: ["my-index-*"],
  composed_of: ["ct1", "ct2"],
  priority: 5,
});
console.log(response2);

const response3 = await client.indices.simulateTemplate({
  name: "final-template",
});
console.log(response3);
PUT /_component_template/ct1                   
{
  "template": {
    "settings": {
      "index.number_of_shards": 2
    }
  }
}

PUT /_component_template/ct2                    
{
  "template": {
    "settings": {
      "index.number_of_replicas": 0
    },
    "mappings": {
      "properties": {
        "@timestamp": {
          "type": "date"
        }
      }
    }
  }
}

PUT /_index_template/final-template            
{
  "index_patterns": ["my-index-*"],
  "composed_of": ["ct1", "ct2"],
  "priority": 5
}

POST /_index_template/_simulate/final-template 

Создание компонентного шаблона (ct1), устанавливающего количество фрагментов в 2

Создание компонентного шаблона (ct2), устанавливающего количество реплик в 0 и определяющего отображение

Создание шаблона индекса (final-template), использующего компонентные шаблоны

Отображение конфигурации, применяемой шаблоном final-template

В ответе показаны настройки индекса, отображения и псевдонимы, применяемые шаблоном final-template:

{
  "template" : {
    "settings" : {
      "index" : {
        "number_of_shards" : "2",  
        "number_of_replicas" : "0", 
        "routing" : {
          "allocation" : {
            "include" : {
              "_tier_preference" : "data_content"
            }
          }
        }
      }
    },
    "mappings" : {                 
      "properties" : {
        "@timestamp" : {
          "type" : "date"
        }
      }
    },
    "aliases" : { }
  },
  "overlapping" : [ ]
}

Количество фрагментов из ct1

Количество реплик из ct2

Отображения из ct1

Моделирование произвольной конфигурации шаблона

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

resp = client.indices.simulate_template(
    index_patterns=[
        "my-index-*"
    ],
    composed_of=[
        "ct2"
    ],
    priority=10,
    template={
        "settings": {
            "index.number_of_replicas": 1
        }
    },
)
print(resp)
response = client.indices.simulate_template(
  body: {
    index_patterns: [
      'my-index-*'
    ],
    composed_of: [
      'ct2'
    ],
    priority: 10,
    template: {
      settings: {
        'index.number_of_replicas' => 1
      }
    }
  }
)
puts response
const response = await client.indices.simulateTemplate({
  index_patterns: ["my-index-*"],
  composed_of: ["ct2"],
  priority: 10,
  template: {
    settings: {
      "index.number_of_replicas": 1,
    },
  },
});
console.log(response);
POST /_index_template/_simulate
{
  "index_patterns": ["my-index-*"],
  "composed_of": ["ct2"],
  "priority": 10,
  "template": {
    "settings": {
      "index.number_of_replicas": 1
    }
  }
}

В ответе отображаются любые перекрывающиеся шаблоны с более низким приоритетом.

{
  "template" : {
    "settings" : {
      "index" : {
        "number_of_replicas" : "1",
        "routing" : {
          "allocation" : {
            "include" : {
              "_tier_preference" : "data_content"
            }
          }
        }
      }
    },
    "mappings" : {
      "properties" : {
        "@timestamp" : {
          "type" : "date"
        }
      }
    },
    "aliases" : { }
  },
  "overlapping" : [
    {
      "name" : "final-template",
      "index_patterns" : [
        "my-index-*"
      ]
    }
  ]
}

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

END_OF_DOCUMENT_MARKER

Spec-Zone.ru

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