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

Блоки индексов

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

Настройки блоков индекса

Следующие динамические настройки индекса определяют присутствующие блоки в индексе:

index.blocks.read_only
Установите в значение true, чтобы сделать индекс и метаданные индекса только для чтения, false, чтобы разрешить записи и изменения метаданных.
index.blocks.read_only_allow_delete

Аналогично index.blocks.write, за исключением того, что вы можете удалить индекс, когда этот блок установлен. Не устанавливайте и не удаляйте этот блок самостоятельно. Блокиратор фрагментов на основе дисков автоматически устанавливает и удаляет этот блок в соответствии с доступным дисковым пространством.

Удаление документов из индекса для освобождения ресурсов (вместо удаления самого индекса) временно увеличивает размер индекса, и поэтому может быть невозможно, когда узлы имеют мало свободного дискового места. Когда index.blocks.read_only_allow_delete установлено в значение true, удаление документов запрещено. Однако, удаление всего индекса требует очень мало дополнительного дискового пространства и освобождает занимаемое индексом дисковое пространство практически мгновенно, поэтому это все еще разрешено.

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

index.blocks.read
Установите в значение true, чтобы отключить операции чтения для индекса.
index.blocks.write
Установите в значение true, чтобы отключить операции записи данных для индекса. В отличие от read_only, это значение не влияет на метаданные. Например, вы можете настроить параметры индекса с блоком write, но не можете настроить параметры индекса с блоком read_only.
index.blocks.metadata
Установите в значение true, чтобы отключить чтение и запись метаданных индекса.

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

Добавляет блок индекса в индекс.

resp = client.indices.add_block(
    index="my-index-000001",
    block="write",
)
print(resp)
const response = await client.indices.addBlock({
  index: "my-index-000001",
  block: "write",
});
console.log(response);
PUT /my-index-000001/_block/write

Запрос

PUT /<index>/_block/<block>

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

<index>

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

По умолчанию вы должны явно указать индексы, к которым вы добавляете блоки. Чтобы разрешить добавление блоков к индексам с _all, * или другими шаблонами подстановки, измените настройку action.destructive_requires_name на false. Вы можете обновить эту настройку в файле elasticsearch.yml или с помощью API обновления настроек кластера.

<block>

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

Допустимые значения для <block>
metadata
Отключить изменения метаданных, такие как закрытие индекса.
read
Отключить операции чтения.
read_only
Отключить операции записи и изменения метаданных.
write
Отключить операции записи. Однако изменения метаданных все еще разрешены.

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

allow_no_indices

(Необязательно, булево) Если false, запрос возвращает ошибку, если какое-либо выражение с подстановкой по шаблону, алиас индекса или значение _all ссылаются только на отсутствующие или закрытые индексы. Это поведение применяется даже если запрос направлен на другие открытые индексы. Например, запрос, направленный на foo*,bar*, возвращает ошибку, если индекс начинается с foo, но ни один индекс не начинается с bar.

По умолчанию true.

expand_wildcards

(Необязательно, строка) Тип индекса, с которым могут совпадать шаблоны подстановки. Если запрос может указывать на потоки данных, этот аргумент определяет, соответствуют ли шаблоны подстановки скрытым потокам данных. Поддерживает значения, разделённые запятыми, такие как open,hidden. Допустимые значения:

all
Соответствие любому потоку данных или индексу, включая скрытые.
open
Соответствие открытым, нескрытым индексам. Также соответствует любым нескрытым потокам данных.
closed
Соответствие закрытым, нескрытым индексам. Также соответствует любым нескрытым потокам данных. Потоки данных не могут быть закрыты.
hidden
Соответствие скрытым потокам данных и скрытым индексам. Должно быть комбинировано с open, closed или обоими.
none
Шаблоны подстановки не принимаются.

По умолчанию open.

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

Примеры

Следующий пример демонстрирует добавление блока индекса:

resp = client.indices.add_block(
    index="my-index-000001",
    block="write",
)
print(resp)
const response = await client.indices.addBlock({
  index: "my-index-000001",
  block: "write",
});
console.log(response);
PUT /my-index-000001/_block/write

API возвращает следующий ответ:

{
  "acknowledged" : true,
  "shards_acknowledged" : true,
  "indices" : [ {
    "name" : "my-index-000001",
    "blocked" : true
  } ]
}

© 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/index-modules-blocks.html

Spec-Zone.ru

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