文章目录
- 需求出现原因
- 方法1:mongo-connector
- 方法2:mongoosastic
- 方法3:elasticsearch-river-mongodb
- 方法4:Logstash
- 方式5:Transporter
- 参考文献
需求出现原因
MongoDB擅长存储数据,Elasticsearch擅长对数据进行全文搜索。
同时需要两种工具的功能时,需要将数据从MongoDB批量迁移到Elasticsearch。
方法1:mongo-connector
mongo-connector
- 产生:源于MongoDB mongo-labs项目。基于python开发。
- 功能:
创建从MongoDB集群到一个或多个目标系统(如Solr、Elasticsearch或另一个MongoDB集群)的管道,以将MongoDB中的数据同步到目标,然后通过跟踪MongoDB oplog,让目标系统实时跟踪保持MongoDB中的操作。 - 优缺点:
- 优点:已经编号的轻量程序,快速实现功能;不需要更改应用层业务代码
- 缺点:因为后续同步需要oplog,因此MongoDB必须是复制集;不支持自定制功能;不支持应用层限速
elastic2-doc-manager
- 产生:
源于MongoDB mongo-labs项目。基于python开发。
在mongo-connector 2.3 之前,Elastic 的 doc manager 是 mongo-connector的一部分,并且只支持 Elastic 1.x。在mongo-connector版本 2.3 及 2.3 之后,作为mongo-connector的
一个插件包被使用。针对Elasticsearch 2.x 和 5.x 。 - 功能:Elasticsearch 2.x 和 5.x 的文档管理器,用于向ES写入数据。
方法2:mongoosastic
- 功能:使用Nodejs作为Web服务器容器时,Mongoosastic可以从MongoDB读取然后写入es的方式实现数据同步,实现双面存储。
- 优缺点:
- 优点:支持各种方式的自定义;可实现限速功能,避免将es打垮;数据可以同时存储在mongo和ES中
- 缺点:需要修改已有的业务代码,实现方式复杂,不好实现全兼容;可能在CUD操作效率中引起开销;当一种类型的db存储失败时,可能会生成不一致的数据;服务器框架不够灵活,无法进行数据库迁移
方法3:elasticsearch-river-mongodb
- 功能:
River是Elasticsearch用于和数据库进行同步的插件。
elasticsearch -river-mongodb 是 ES 用于同的mongoDB数据的插件,通过监视oplog实现。
方法4:Logstash
- 功能:
动态同步不同来源的数据,并将数据规范到目的服务器。
Logstash工作的三个阶段:输入→过滤器→输出。
- 输入:生成事件
- 过滤器:修改事件
- 输出:将事件发送到目的地
方式5:Transporter
- 功能:
由Compose(数据库的云平台)开发的开源工具。
每次工作只同步一次。
参考文献
http://www.52devops.com/chuck/1427.html mongo-connector 的优缺点,mongo和ES连接的实现方式
https://zhuanlan.zhihu.com/p/26906652 mongo和ES连接的实现方式
https://github.com/yougov/mongo-connector mongo-connector - GitHub官方文档
https://github.com/yougov/elastic2-doc-manager elastic2-doc-manager - GitHub官方文档
https://github.com/yougov/mongo-connector/wiki/Usage with ElasticSearch mongo-connector用于ES - GitHub官方文档
https://code.likeagirl.io/5-different-ways-to-synchronize-data-from-mongodb-to-elasticsearch-d8456b83d44f MongoDB连接ElasticSearch的5中不同方式