Как увеличить количество первичных шардов в OpenSearch

Невозможно увеличить количество первичных шардов существующего индекса, поэтому для увеличения количества первичных шардов индекс необходимо создать заново. В таких ситуациях обычно используются два метода: API _reindex и API _split.

API _split часто является более быстрым методом, чем API _reindex. Индексирование должно быть остановлено перед обеими операциями, иначе количество документов в исходном_индексе и целевом_индексе будет отличаться.

Также не забывайте, что все эти операции можно легко выполнить с помощью оператора AutoOps.

Метод 1 - использование API _split

API split используется для создания нового индекса с нужным количеством первичных шардов путем копирования настроек и сопоставления существующего индекса. Желаемое количество первичных шардов может быть задано во время создания. Перед применением API разделения необходимо проверить следующие параметры:

Исходный индекс должен быть доступен только для чтения. Это означает, что процесс индексирования должен быть остановлен.
Количество первичных шардов в целевом индексе должно быть кратно количеству первичных шардов в исходном индексе. Например, если в исходном индексе 5 первичных шардов, то в целевом индексе первичных шардов может быть 10,15,20 и так далее.

Если необходимо изменить только номер первичного шарда, предпочтительнее использовать API split, так как он намного быстрее API Reindex.

Реализация API разделения

Создайте тестовый индекс:

Для разделения исходный индекс должен быть доступен только для чтения:

Настройки и сопоставления будут автоматически скопированы из исходного индекса:

Вы можете проверить прогресс с помощью:

Поскольку настройки и сопоставления копируются из исходных индексов, целевой индекс доступен только для чтения. Давайте включим операцию записи для целевого индекса:

Проверьте исходный и целевой индекс docs.count перед удалением исходного индекса:

Имя индекса и имя псевдонима не могут быть одинаковыми. Необходимо удалить исходный индекс и добавить имя исходного индекса в качестве псевдонима к целевому индексу:

Добавив псевдоним test_split_source в индекс test_split_target, вы должны протестировать его с помощью:

Метод 2 - использование API _reindex

При создании нового индекса с помощью Reindex API можно задать любое количество первичных шардов. После создания нового индекса с заданным количеством первичных шардов все данные в исходном индексе могут быть переиндексированы в этот новый индекс.

В дополнение к функциям API разделения, данными можно манипулировать с помощью конвейера ingest_pipeline в AP переиндекса. С помощью конвейера ingest только указанные поля, соответствующие фильтру, будут проиндексированы в целевом индексе с помощью запроса. Содержимое данных можно изменить с помощью несложного сценария, а несколько индексов можно объединить в один индекс.

Реализация API reindex

Создайте тестовый индекс:

Скопируйте настройки и сопоставления из исходного индекса:

Создайте целевой индекс с настройками, сопоставлениями и нужным количеством шардов:

Установка параметров number_of_replicas: 0 и refresh_interval: -1 увеличит скорость переиндексации.

Запустите процесс переиндексации. Установка параметров requests_per_second=-1 и slices=auto настроит скорость переиндексации.

Вы увидите идентификатор задачи при запуске API reindex. Скопируйте его и проверьте с помощью API _tasks:

Обновите настройки после завершения переиндексации:

Проверьте исходный и целевой индекс docs.count перед удалением исходного индекса, они должны быть одинаковыми:

Имя индекса и имя псевдонима не могут быть одинаковыми. Удалите исходный индекс и добавьте имя исходного индекса в качестве псевдонима к целевому индексу:

После добавления псевдонима test_split_source к индексу test_split_target протестируйте его с помощью:

Заключение

Если вы хотите увеличить количество первичных шардов в существующем индексе, вам нужно заново создать настройки и отображения для нового индекса. Для этого существует 2 основных метода: API переиндексации и API разделения. Перед использованием любого из этих методов активное индексирование должно быть остановлено.

Понравилась статья? Поделиться с друзьями:
Добавить комментарий