У меня есть база данных mysql с парами таблиц, я хочу перенести данные mysql в ElasticSearch. Легко перенести всю базу данных в ES посредством пакетного задания. Но как я должен обновлять ES из реального времени mysql. т.е. если в mysql была операция обновления, то я должен выполнить ту же операцию в ES. Я исследовал mysql binLog, который может отражать любые изменения от mysql. Но я должен разбирать binLog для синтаксиса ES, я думаю, что это действительно больно. Благодарю! (тот же случай с Solr)
Как перенести данные mysql в ElasticSearch в реальном времени
Ответ 1
Существует существующий проект, который берет ваш binlog, преобразует его и отправляет в Elasticsearch. Вы можете проверить его по адресу: https://github.com/siddontang/go-mysql-elasticsearch
Еще один будет следующим: https://github.com/noplay/python-mysql-replication.
Однако обратите внимание, что в зависимости от того, что вы выберете, хорошей практикой является предварительное создание индекса и отображений перед индексацией вашего binlog. Это дает вам больше контроля над вашими данными.
ОБНОВИТЬ:
Вот еще одна интересная статья в блоге на эту тему: Как синхронизировать Elasticsearch с реляционной базой данных с помощью Logstash
Ответ 2
Лучшим решением с открытым исходным кодом будет this. Вы можете запустить это как командную строку и дать дополнительную логику в команде.
Перейдите через этот сеанс, чтобы получить полную идею.