如何将 mysql 数据实时迁移到 ElasticSearch

how to migrate mysql data to ElasticSearch realtime

我有一个包含几个表的 mysql 数据库,我想将 mysql 数据迁移到 ElasticSearch。通过批处理作业将整个数据库迁移到 ES 很容易。但是我应该如何从 mysql 实时更新 ES。也就是说,如果 mysql 中有更新操作,那么我应该在 ES 中执行相同的操作。 我研究了 mysql binLog,它可以反映 mysql 的任何变化。但是我得把binLog解析成ES的语法,我觉得真的很痛苦。谢谢! (与 Solr 相同)

最好的开源解决方案是 this。 您可以 运行 这作为命令行,并在命令中也给出增量逻辑。

完成 this 课程以获得完整的想法。

有一个现有的项目可以获取您的二进制日志,对其进行转换并将其发送到 Elasticsearch,您可以在以下位置查看:https://github.com/siddontang/go-mysql-elasticsearch

另一个是这个:https://github.com/noplay/python-mysql-replication

但是请注意,无论您选择哪种方式,在为二进制日志编制索引之前预先创建索引和映射都是一种很好的做法。这使您可以更好地控制数据。

更新:

这是关于该主题的另一篇有趣的博客文章:How to keep Elasticsearch synchronized with a relational database using Logstash

我想最好的选择是简单地使用名为 debezium 的 Kafka 连接插件,并使用 Mysql 源连接器和 Elastic Search 接收器连接器