API создания индекса
Создает новый индекс.
PUT /my-index-000001
Запрос
PUT /<index>
Предварительные условия
- Если включены функции безопасности Elasticsearch, у вас должна быть
create_indexилиmanageпривилегия индекса для целевого индекса. Для добавления индекса в псевдоним, у вас должна бытьmanageпривилегия индекса для псевдонима.
Описание
Вы можете использовать API создания индекса для добавления нового индекса в кластер Elasticsearch. При создании индекса вы можете указать следующее:
- Параметры индекса
- Сопоставления для полей в индексе
- Псевдонимы индекса
Параметры пути
-
<index> -
(Обязательно, строка) Название индекса, который вы хотите создать.
Имена индексов должны соответствовать следующим критериям:
- Только строчные буквы
- Не может содержать
\,/,*,?,",<,>,|, ` ` (пробел),,,# - Индексы до версии 7.0 могли содержать двоеточие (
:), но это устарело и не будет поддерживаться в 7.0+ - Не может начинаться с
-,_,+ - Не может быть
.или.. - Не может быть длиннее 255 байт (обратите внимание, это байты, поэтому символы с несколькими байтами быстрее достигнут лимита 255)
- Имена, начинающиеся с
., устарели, за исключением скрытых индексов и внутренних индексов, управляемых плагинами
Параметры запроса
-
include_type_name - [7.0.0] Устарело в 7.0.0. Типы сопоставлений устарели. См. Удаление типов сопоставлений. (Необязательно, логическое значение) Если
true, ожидается тип сопоставления в теле сопоставлений. По умолчаниюfalse. -
wait_for_active_shards -
(Необязательно, строка) Количество копий фрагментов, которые должны быть активными, прежде чем продолжить операцию. Установите значение в
allили любое положительное целое число до общего количества фрагментов в индексе (number_of_replicas+1). По умолчанию: 1, основной фрагмент.См. Активные фрагменты.
-
master_timeout - (Необязательно, единицы времени) Период ожидания подключения к мастер-узлу. Если ответ не получен до истечения срока ожидания, запрос завершается ошибкой и возвращает ошибку. По умолчанию
30s. -
timeout - (Необязательно, единицы времени) Период ожидания ответа. Если ответ не получен до истечения срока ожидания, запрос завершается ошибкой и возвращает ошибку. По умолчанию
30s.
Тело запроса
-
aliases -
(Необязательно, объект объектов) Псевдонимы для индекса.
Свойства объектов
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 - (Необязательно, объект настроек индекса) Параметры конфигурации индекса. См. Настройки индекса.
Примеры
Настройки индекса
Каждый созданный индекс может иметь определённые настройки, которые определяются в теле запроса:
PUT /my-index-000001
{
"settings": {
"index": {
"number_of_shards": 3,
"number_of_replicas": 2
}
}
} | По умолчанию для | |
| По умолчанию для |
или более упрощённо
PUT /my-index-000001
{
"settings": {
"number_of_shards": 3,
"number_of_replicas": 2
}
} Необязательно явно указывать раздел index внутри раздела settings.
Для получения дополнительной информации о всех различных настройках уровня индекса, которые можно задать при создании индекса, см. раздел модули индексов.
Карты (Mappings)
API для создания индекса позволяет задавать определение карты:
PUT /test
{
"settings": {
"number_of_shards": 1
},
"mappings": {
"properties": {
"field1": { "type": "text" }
}
}
} До версии 7.0.0 определение mappings включало имя типа. Хотя указание типов в запросах теперь устарело, тип всё ещё можно указать, если параметр запроса include_type_name задан. Более подробную информацию можно найти в разделе Удаление типов карты.
Псевдонимы (Aliases)
API для создания индекса также позволяет задать набор псевдонимов:
PUT /test
{
"aliases": {
"alias_1": {},
"alias_2": {
"filter": {
"term": { "user.id": "kimchy" }
},
"routing": "shard-1"
}
}
} Имена псевдонимов индексов также поддерживают date math.
PUT /logs
{
"aliases": {
"<logs_{now/M}>": {}
}
} Ожидание активности фрагментов
По умолчанию создание индекса вернёт ответ клиенту только когда будут запущены первичные копии каждого фрагмента или истечёт время ожидания. Ответ на создание индекса укажет, что произошло:
{
"acknowledged": true,
"shards_acknowledged": true,
"index": "logs"
} acknowledged указывает, был ли индекс успешно создан в кластере, а shards_acknowledged указывает, было ли запущено требуемое количество копий фрагментов для каждого фрагмента в индексе до истечения времени ожидания. Обратите внимание, что acknowledged или shards_acknowledged могут быть false, но создание индекса было успешным. Эти значения просто указывают, завершилась ли операция до истечения времени ожидания. Если acknowledged равно false, тогда время ожидания истекло до того, как состояние кластера было обновлено с созданным индексом, но он, вероятно, будет создан вскоре. Если shards_acknowledged равно false, тогда время ожидания истекло до того, как было запущено требуемое количество фрагментов (по умолчанию только первичные), даже если состояние кластера было успешно обновлено, чтобы отразить недавно созданный индекс (т.е. acknowledged=true).
Мы можем изменить стандартное ожидание только первичных фрагментов через настройку индекса index.write.wait_for_active_shards (обратите внимание, что изменение этой настройки также повлияет на значение wait_for_active_shards во всех последующих операциях записи):
PUT /test
{
"settings": {
"index.write.wait_for_active_shards": "2"
}
} или через параметр запроса wait_for_active_shards:
PUT /test?wait_for_active_shards=2
Подробное объяснение wait_for_active_shards и его возможных значений можно найти здесь.
© 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-create-index.html