Миграция данных из стороннего кластера Elasticsearch с помощью Reindex API
Важно
Сервис Yandex Managed Service for Elasticsearch недоступен с 11 апреля 2024 года.
Вы можете создать кластер OpenSearch в Yandex Cloud в качестве альтернативы Elasticsearch.
Кластеры Managed Service for Elasticsearch поддерживают механизм переиндексации — Reindex API
Чтобы мигрировать данные из кластера-источника Elasticsearch в кластер-приемник Managed Service for Elasticsearch:
Если созданные ресурсы вам больше не нужны, удалите их.
Перед началом работы
-
Создайте кластер-приемник Managed Service for Elasticsearch любой подходящей конфигурации.
Включите доступ к хостам кластера через публичные IP-адреса.
Важно
Версия Elasticsearch в кластере-приемнике должна быть не ниже чем в кластере-источнике.
-
Убедитесь, что вы можете подключиться к кластеру-приемнику Managed Service for Elasticsearch с помощью Elasticsearch API и Kibana.
-
Убедитесь, что у кластера-источника Elasticsearch есть доступ в интернет.
-
Если кластер-источник использует для защиты соединения самоподписанный сертификат, добавьте его в качестве расширения к кластеру-приемнику.
-
Создайте в кластере-источнике пользователя с ролями
monitoring_user
иviewer
.
Настройте кластер-приемник
-
Создайте роль
с привилегиямиcreate_index
иwrite
для всех индексов (*
). -
Создайте пользователя и назначьте ему эту роль.
Совет
В кластерах Managed Service for Elasticsearch вы можете использовать Reindex API от имени пользователя
admin
, имеющего рольsuperuser
, но безопаснее для каждой задачи создавать отдельных пользователей с ограниченными привилегиями. Подробнее см. в разделе Управление пользователями Elasticsearch. -
-
Reindex remote whitelist — укажите IP-адрес или FQDN кластера-источника, например:
192.168.0.1:9200, example.com:9200
-
(Опционально) Reindex SSL CA path — укажите локальный путь до загруженного сертификата
/etc/elasticsearch/extensions/<имя_расширения>/<имя_сертификата>
.
-
Запустите переиндексацию
-
Получите список хостов кластера-приемника.
-
Для запуска переиндексации выполните запрос к хосту с ролью Master node в кластере-приемнике:
curl --user <имя_пользователя_в_кластере-приемнике>:<пароль_пользователя_в_кластере-приемнике> \ --request POST "https://<IP-адрес_или_FQDN_хоста_Master_node_в_кластере-приемнике>:9200/_reindex?pretty" \ --header 'Content-Type: application/json' \ --data '{ "source": { "remote": { "host": "https://<IP-адрес_или_FQDN_хоста_Master_Node_в_кластере-источнике>:9200", "username": "<имя_пользователя_в_кластере-источнике>", "password": "<пароль_пользователя_в_кластере-источнике>" }, "index": "<имя_индекса_псевдонима_или_потока_данных_в_кластере-источнике>" }, "dest": { "index": "<имя_индекса_псевдонима_или_потока_данных_в_кластере-приемнике>" } }'
Чтобы перенести несколько индексов, используйте цикл
for
:for index in <имена_индексов_псевдонимов_или_потоков_данных_разделенные_пробелами>; do curl --user <имя_пользователя_в_кластере-приемнике>:<пароль_пользователя_в_кластере-приемнике> \ --request POST "https://<IP-адрес_или_FQDN_хоста_Master_Node_в_кластере-приемнике>:9200/_reindex?pretty" \ --header 'Content-Type: application/json' \ --data '{ "source": { "remote": { "host": "https://<IP-адрес_или_FQDN_хоста_Master_Node_в_кластере-источнике>:9200", "username": "<имя_пользователя_в_кластере-источнике>", "password": "<пароль_пользователя_в_кластере-источнике>" }, "index": "'$index'" }, "dest": { "index": "'$index'" } }' done
Удалите неиспользуемые ресурсы
Удалите ресурсы, которые вы больше не будете использовать, чтобы за них не списывалась плата:
- Если вы зарезервировали для доступа к кластеру публичные статические IP-адреса, освободите и удалите их.
- Если для загрузки самоподписанного сертификата вы использовали бакет Yandex Object Storage, очистите и удалите его.