Блоки индексов
Блоки индексов ограничивают типы операций, доступных для определенного индекса. Блоки бывают разных типов, позволяя блокировать операции записи, чтения или метаданных. Блоки можно устанавливать/удалять с помощью динамических настроек индекса или добавлять с помощью специального API, который также гарантирует, что после успешного возврата пользователю все фрагменты индекса корректно учитывают блок, например, что все незавершенные записи в индекс были завершены после добавления блока записи.
Настройки блокировки индекса
Следующие динамические настройки индекса определяют блоки, присутствующие в индексе:
-
index.blocks.read_only - Устанавливается в значение
true, чтобы сделать индекс и метаданные индекса только для чтения,false, чтобы разрешить запись и изменения метаданных. -
index.blocks.read_only_allow_delete -
Аналогично
index.blocks.read_only, но также позволяет удалять индекс для освобождения ресурсов. Диск-базированный распределения фрагментов может автоматически добавлять и удалять этот блок.Удаление документов из индекса для освобождения ресурсов, а не удаление самого индекса, может со временем увеличивать размер индекса. Когда
index.blocks.read_only_allow_deleteустановлено в значениеtrue, удаление документов запрещено. Однако удаление самого индекса освобождает блок индекса только для чтения и делает ресурсы доступными практически мгновенно.Elasticsearch автоматически добавляет и удаляет блок индекса только для чтения, когда использование диска падает ниже высокой отметки, контролируемой параметром cluster.routing.allocation.disk.watermark.flood_stage.
-
index.blocks.read - Устанавливается в значение
true, чтобы отключить операции чтения в индексе. -
index.blocks.write - Устанавливается в значение
true, чтобы отключить операции записи данных в индекс. В отличие отread_only, эта настройка не влияет на метаданные. Например, вы можете закрыть индекс с блокомwrite, но не можете закрыть индекс с блокомread_only. -
index.blocks.metadata - Устанавливается в значение
true, чтобы отключить чтение и запись метаданных индекса.
API добавления блока индекса
Добавляет блок индекса в индекс.
PUT /my-index-000001/_block/write
Запрос
PUT /<index>/_block/<block>
Параметры пути
-
<index> -
(Необязательно, строка) Список или шаблон выражений через запятую имен индексов, используемых для ограничения запроса.
Чтобы добавить блоки ко всем индексам, используйте
_allили*. Чтобы запретить добавление блоков в индексы с_allили шаблонами, измените настройку кластераaction.destructive_requires_nameна значениеtrue. Вы можете обновить эту настройку в файле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. -
timeout - (Необязательно, единицы времени) Период ожидания ответа. Если ответ не получен до истечения срока ожидания, запрос завершается неудачей и возвращает ошибку. По умолчанию
30s.
Примеры
Следующий пример демонстрирует добавление блока индекса:
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/7.17/index-modules-blocks.html