Передача данных в эндпоинт-приемник Elasticsearch
С помощью сервиса Yandex Data Transfer вы можете переносить данные в базу Elasticsearch и реализовывать различные сценарии переноса, обработки и трансформации данных. Для реализации трансфера:
- Настройте один из поддерживаемых источников данных.
- Подготовьте базу данных Elasticsearch к трансферу.
- Настройте эндпоинт-приемник в Yandex Data Transfer.
- Создайте и запустите трансфер.
- Выполняйте необходимые действия по работе с базой и контролируйте трансфер.
- При возникновении проблем, воспользуйтесь готовыми решениями по их устранению.
Настройка источника данных
Настройте один из поддерживаемых источников данных:
Полный список поддерживаемых источников и приемников в Yandex Data Transfer см. в разделе Доступные трансферы.
Подготовка базы данных приемника
Примечание
Версии Elasticsearch ниже 7.x не поддерживаются.
Если вы не планируете использовать для подключения к внешнему кластеру сервис Cloud Interconnect или VPN, разрешите подключения к такому кластеру из интернета с IP-адресов, используемых сервисом Data Transfer.
Подробнее о настройке сети для работы с внешними ресурсами см. в концепции.
-
Убедитесь, что количество колонок в источнике не превышает максимальное количество полей в индексах Elasticsearch. Максимальное количество полей задается в параметре
index.mapping.total_fields.limitи по умолчанию составляет1000.Чтобы увеличить значение параметра, настройте шаблон
, по которому максимальное количество полей в создаваемых индексах будет равно указанному значению.Пример запроса для настройки шаблона
curl \ --user <имя_пользователя_Elasticsearch>:<пароль> \ --header 'Content-Type: application/json' \ --request PUT "https://<FQDN_кластера_Elasticsearch>:9200/_template/index_defaults" \ --data ' { "index_patterns": "cdc*", "settings": { "index": { "mapping": { "total_fields": { "limit": "2000" } } } } }'При такой настройке шаблона, все новые индексы с маской
cdc*смогут содержать до2000полей.Для настройки шаблона можно также использовать интерфейс Kibana
.Проверить текущее значение параметра
index.mapping.total_fields.limitможно с помощью интерфейса Kibana , либо выполнив запрос:curl \ --user <имя_пользователя_Elasticsearch>:<пароль> \ --header 'Content-Type: application/json' \ --request GET 'https://<FQDN_кластера_Elasticsearch>:9200/<название_индекса>/_settings/*total_fields.limit?include_defaults=true' -
По умолчанию при трансфере данных в единичный индекс задействуется только один хост. Чтобы распределить нагрузку между хостами при передаче больших объемов данных, настройте шаблон
, по которому создаваемые индексы будут заранее разбиты на шарды.Пример запроса для настройки шаблона
curl \ --user <имя_пользователя_Elasticsearch>:<пароль> \ --header 'Content-Type: application/json' \ --request PUT 'https://<FQDN_кластера_Elasticsearch>:9200/_template/index_defaults' \ --data ' { "index_patterns": "cdc*", "settings" : { "index" : { "number_of_shards" : 15, "number_of_replicas" : 1 } } }'При такой настройке шаблона, все новые индексы с маской
cdc*будут разбиты на15шардов.Для настройки шаблона можно также использовать интерфейс Kibana
.
Настройка эндпоинта-приемника Elasticsearch
При создании или изменении эндпоинта вы можете задать:
- Настройки подключения к Elasticsearch. Эти параметры обязательные.
- Дополнительные параметры.
Пользовательская инсталляция
Подключение к узлам с явным указанием сетевых адресов и портов.
-
Узлы с данными — нажмите на значок
, чтобы добавить новый узел с данными. Для каждого узла укажите: -
Хост — IP-адрес или FQDN хоста с ролью
DATA, к которому необходимо подключиться. -
Порт — номер порта, который сервис Data Transfer будет использовать для подключения к хосту с ролью
DATA. -
SSL — выберите, если используется безопасное соединение SSL.
-
Сертификат CA — загрузите файл сертификата или добавьте его содержимое в текстовом виде, если требуется шифрование передаваемых данных, например, для соответствия требованиям PCI DSS.
-
Идентификатор подсети — выберите или создайте подсеть в нужной зоне доступности.
Если значение в этом поле задано для обоих эндпоинтов, то обе подсети должны быть размещены в одной зоне доступности. -
Пользователь — укажите имя пользователя, под которым сервис Data Transfer будет подключаться к кластеру.
-
Пароль — укажите пароль пользователя для доступа к кластеру.
-
Группы безопасности — выберите облачную сеть для размещения эндпоинта и группы безопасности для сетевого трафика.
Это позволит применить к ВМ и кластерам в выбранной сети указанные правила групп безопасности без изменения настроек этих ВМ и кластеров. Подробнее см. в разделе Сеть в Yandex Data Transfer.
Дополнительные настройки
-
Политика очистки — выберите способ очистки данных в приемнике перед переносом:
-
Не очищать— выберите эту опцию, если будет производиться только репликация без копирования данных. -
Drop— полное удаление таблиц, участвующих в трансфере (вариант по умолчанию).Используйте эту опцию, чтобы при любой активации трансфера в базу-приемник всегда передавалась самая последняя версия схемы таблиц из источника.
-
-
Исправить некорректные ключи в документах — выберите эту опцию, чтобы для полей на приемнике выполнялась автозамена ключей, невалидных для Elasticsearch.
Правила автозамены:
- Пустые или состоящие из пробелов и точек ключи будут заменены на подчеркивание:
""," ","."→"_". - Точки в начале и конце ключа будут удалены:
"somekey.",".somekey"→"somekey". - Если две точки стоят друг за другом, либо между ними есть только пробелы, весь фрагмент будет заменен на точку:
" some . . key"→" some . key".
Пример:
". s o m e ..incorrect....key. . . "→" s o m e .incorrect.key". - Пустые или состоящие из пробелов и точек ключи будут заменены на подчеркивание:
После настройки источника и приемника данных создайте и запустите трансфер.