Elasticsearch就是專門用於搜索的,所以我們會將新增的數據放入Elasticsearch中用於搜索,就有這樣的常見的場景,需要將Mysql中的數據同步到Elasticsearch中。
Mysql數據同步到ES類型
Mysql數據同步到ES中分為兩種,分別是全量同步和增量同步。全量同步表示第一次建立好ES索引之后,將Mysql中所有數據一次性導入到ES中。增量同步表示Mysql中產生新的數據,這些新的數據包括三種情況,就是新插入Mysql中的數據,更新老的數據,刪除的數據,這些數據的變動與新增都要同步到ES中。
Mysql與ES的數據同步實現方式
業界有一些開源方案,開源中間件來實現。
1. 基於Mysql的binlog日志訂閱:binlog日志是Mysql用來記錄數據實時的變化。
這里主要的是binlog同步組件,目前實現的有國內的阿里巴巴開發的canal。
github地址:https://github.com/alibaba/canal
2. 使用go-mysql-elasticsearch。
go-mysql-elasticsearch是一款使用go語言開發的同步數據到ES的工具。
項目github地址:https://github.com/siddontang/go-mysql-elasticsearch
go-mysql-elasticsearch也是基於Mysql的binlog訂閱,也可以使用使用mysqldump的方式。
目前還不支持ES6.x及以上的版本,也不支持mysql8.x版本,同時該項目目前還不夠穩定,也在開發中。
3. ES官方數據收集和同步組件logstash