文章目录

  • 需求出现原因
  • 方法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中不同方式