MySQL到Elasticsearch的同步之路
六个月前写买好车搜索的Elasticsearch实践:初体验这篇文章的时候,我司刚刚迁移到Elasticserach,六个月之后的今天跟我最开始什么都不懂的时候搭起来的架构还是一模一样,这几天稍微有点时间,将Elasticsearch升级到了5.0.2,顺便整理了一下架构。 这一篇主要记录搜索与数据库同步的一些变化。
洪荒时代
Elasticsearch 2.0 之前,同步数据到Elasticsearch的功能由一个官方提供的插件(plugin)占领:river。通过实现不同的river插件,可以将数据从数据库,消息队列,nosql等等同步到Elasticsearch中,比如:elasticsearch-river-rabbitmq、elasticsearch-river-couchdb等等。
以plugin方式运行的形式如图:
可以看到,插件与Elasticsearch运行在同一个jvm上,显然这会导致一系列的问题,正如Deprecating Rivers中所说: