Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • Машинное обучение
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Истории успеха
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Документация
  • Блог
Проект Яндекса
© 2025 ООО «Яндекс.Облако»
Yandex Data Transfer
  • Доступные трансферы
  • Начало работы
    • Все инструкции
    • Подготовка к трансферу
      • Управление эндпоинтами
      • Миграция эндпоинтов в другую зону доступности
        • Источник
        • Приемник
    • Управление трансфером
    • Работа с базами данных во время трансфера
    • Мониторинг состояния трансфера
  • Решение проблем
  • Управление доступом
  • Справочник Terraform
  • Метрики Monitoring
  • Аудитные логи Audit Trails
  • Публичные материалы
  • Обучающие курсы

В этой статье:

  • Сценарии передачи данных в Elasticsearch
  • Настройка источника данных
  • Подготовка базы данных приемника
  • Настройка эндпоинта-приемника Elasticsearch
  • Пользовательская инсталляция
  • Дополнительные настройки
  • Решение проблем, возникающих при переносе данных
  • Прерывание трансфера с ошибкой
  • Дублирование документов на приемнике
  1. Пошаговые инструкции
  2. Настройка эндпоинтов
  3. Elasticsearch
  4. Приемник

Передача данных в эндпоинт-приемник Elasticsearch

Статья создана
Yandex Cloud
Обновлена 10 апреля 2025 г.
  • Сценарии передачи данных в Elasticsearch
  • Настройка источника данных
  • Подготовка базы данных приемника
  • Настройка эндпоинта-приемника Elasticsearch
    • Пользовательская инсталляция
    • Дополнительные настройки
  • Решение проблем, возникающих при переносе данных
    • Прерывание трансфера с ошибкой
    • Дублирование документов на приемнике

С помощью сервиса Yandex Data Transfer вы можете переносить данные в базу Elasticsearch и реализовывать различные сценарии переноса, обработки и трансформации данных. Для реализации трансфера:

  1. Ознакомьтесь с возможными сценариями передачи данных.
  2. Настройте один из поддерживаемых источников данных.
  3. Подготовьте базу данных Elasticsearch к трансферу.
  4. Настройте эндпоинт-приемник в Yandex Data Transfer.
  5. Создайте и запустите трансфер.
  6. Выполняйте необходимые действия по работе с базой и контролируйте трансфер.
  7. При возникновении проблем, воспользуйтесь готовыми решениями по их устранению.

Сценарии передачи данных в ElasticsearchСценарии передачи данных в Elasticsearch

  1. Миграция — перенос данных из одного хранилища в другое. Часто это перенос базы из устаревших локальных баз в управляемые облачные.

Настройка источника данныхНастройка источника данных

Настройте один из поддерживаемых источников данных:

  • Apache Kafka®;
  • YDS;
  • PostgreSQL.
  • Elasticsearch;
  • OpenSearch.

Полный список поддерживаемых источников и приемников в Yandex Data Transfer см. в разделе Доступные трансферы.

Подготовка базы данных приемникаПодготовка базы данных приемника

Elasticsearch
  • Если вы не планируете использовать для подключения к внешнему кластеру сервис 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

При создании или изменении эндпоинта вы можете задать:

  • Настройки подключения к пользовательской инсталляции, в т. ч. на базе виртуальных машин Yandex Compute Cloud. Эти параметры обязательные.
  • Дополнительные параметры.

Пользовательская инсталляцияПользовательская инсталляция

Подключение к узлам с явным указанием сетевых адресов и портов.

Консоль управления
  • Узлы с данными — нажмите на значок , чтобы добавить новый узел с данными. Для каждого узла укажите:

    • Хост — 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".

После настройки источника и приемника данных создайте и запустите трансфер.

Решение проблем, возникающих при переносе данныхРешение проблем, возникающих при переносе данных

  • Прерывание трансфера с ошибкой
  • Дублирование документов на приемнике

См. полный список рекомендаций в разделе Решение проблем.

Прерывание трансфера с ошибкойПрерывание трансфера с ошибкой

Тексты ошибок:

object field starting or ending with a [.] makes object resolution ambiguous <описание_поля>

Index -1 out of bounds for length 0

Трансфер прерывается из-за того, что ключи в передаваемых документах невалидны для приемника Elasticsearch. К невалидным относятся пустые ключи, а также ключи:

  • состоящие из пробелов;
  • состоящие из точек;
  • с точкой в начале или конце;
  • с точками, стоящими друг за другом;
  • с точками, разделенными пробелами.

Решение:

В дополнительных настройках эндпоинта-приемника включите опцию Исправить некорректные ключи в документах и активируйте трансфер повторно.

Дублирование документов на приемникеДублирование документов на приемнике

На приемнике возникают дубли документов при повторной передаче данных.

Все документы, передаваемые из одной таблицы источника, попадают в один индекс с именем <schemaName.tableName> на приемнике. При этом по умолчанию приемник автоматически генерирует идентификаторы документов (_id). В результате одинаковые документы получают разные идентификаторы и дублируются.

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

Генерация происходит следующим образом:

  1. Если значение ключа содержит ., она экранируется \: some.key --> some\.key.
  2. Значения всех первичных ключей преобразуются в строку: <some_key1>.<some_key2>.<...>.
  3. Полученная строка преобразуется функцией url.QueryEscape.
  4. Если длина итоговой строки не превышает 512 символов, то она используется в качестве _id. Если длина больше 512 символов, то она хешируется алгоритмом SHA-1, и в качестве _id используется полученный хеш.

В результате документы с одинаковыми первичными ключами получат одинаковый идентификатор при повторной передаче данных, и последний переданный документ перезапишет существующий.

Решение:

  1. Установите первичный ключ для одного или нескольких столбцов на источнике или в правилах конвертации эндпоинта.
  2. Запустите трансфер.

Была ли статья полезна?

Предыдущая
Источник
Следующая
Источник
Проект Яндекса
© 2025 ООО «Яндекс.Облако»