Подтвердить что ты не робот

Как перенести данные mysql в ElasticSearch в реальном времени

У меня есть база данных mysql с парами таблиц, я хочу перенести данные mysql в ElasticSearch. Легко перенести всю базу данных в ES посредством пакетного задания. Но как я должен обновлять ES из реального времени mysql. т.е. если в mysql была операция обновления, то я должен выполнить ту же операцию в ES. Я исследовал mysql binLog, который может отражать любые изменения от mysql. Но я должен разбирать binLog для синтаксиса ES, я думаю, что это действительно больно. Благодарю! (тот же случай с Solr)

4b9b3361

Ответ 1

Существует существующий проект, который берет ваш binlog, преобразует его и отправляет в Elasticsearch. Вы можете проверить его по адресу: https://github.com/siddontang/go-mysql-elasticsearch

Еще один будет следующим: https://github.com/noplay/python-mysql-replication.

Однако обратите внимание, что в зависимости от того, что вы выберете, хорошей практикой является предварительное создание индекса и отображений перед индексацией вашего binlog. Это дает вам больше контроля над вашими данными.

ОБНОВИТЬ:

Вот еще одна интересная статья в блоге на эту тему: Как синхронизировать Elasticsearch с реляционной базой данных с помощью Logstash

Ответ 2

Лучшим решением с открытым исходным кодом будет this. Вы можете запустить это как командную строку и дать дополнительную логику в команде.

Перейдите через этот сеанс, чтобы получить полную идею.