相关文档 https://blog.csdn.net/laoyang360/article/details/88600799
mysql同步ES的方案,基本分两种,根据字段扫描或者通过解析binlog同步。前者的缺点是无法处理逻辑删除、需要频繁的根据某字段做全表扫描。
兼顾性能和ES的兼容性,我们选择了canal。
框架
|
增量
|
全量
|
支持ES版本
|
github
|
缺点
|
---|---|---|---|---|---|
canal | binlog | 扫描 | >=5.6 | ||
elasticsearch-jdbc | jdbc | jdbc | <=2.3.4 | https://github.com/jprante/elasticsearch-jdbc | 无法处理物理删除 |
go-mysql-elasticsearch | mysqldump | binlog | <6.0 | https://github.com/siddontang/go-mysql-elasticsearch | 没有更新了 |
Logstash-input-jdbc | 按照字段扫描 | 扫描 | 都可以 | 需要根据某个字段一直扫描,比如update_time,必须加索引;无法处理物理删除 |
ES版本选择
结论:6.8.0
原因:es的更新版本非常快,经常一个月就一个小版本。6.8.0是19年5月21发布的。为了性能和稳定性,选择6.x。
既然选择了canal,我们需要升级ES版本。老的业务可以继续使用老的集群。本次的实时更新es使用新的集群。升级到哪个版本呢?
先去调研各个版本的feature
版本
|
feature
|
|
|
---|---|---|---|
2.x | |||
5.x | 支持lucene6.x,多维浮点字段 Block k-d trees,核心思想是将数字类型编码成定长的字节数组,对定长的字节数组内容进行编码排序, 然后来构建二叉树,然后依次递归构建,目前底层支持8个维度和最多每个维度16个字节,基本满足大部分场景。 在Internal engine级别移除了用于避免同一文档并发更新的竞争锁。 Sliced Scroll 分片数量减少:shrink reindex 提供了java原生的rest客户端sdk Text/Keyword 来替换 String |
磁盘空间少一半;索引时间少一半;查询性能提升25% | http://www.10tiao.com/html/157/201607/2653160245/1.html |
6.x | elasticsearch 6.x 升级调研报告 | ||
7.x | Elastic Stack 7.0.0 正式发布 |
来源:oschina
链接:https://my.oschina.net/shunshun/blog/3184938