使用 mongo-connector 同步 MongoDB 数据库到 ElasticSearch

在做毕设的时候,有一个需求,需要把 MongoDB 的数据同步到 ElasticSearch,于是发现了这个 mongo-connector

mongo-connector 可以把 MongoDB 的数据同步到 Solr、ElasticSearch 或者另一个 MongoDB。
支持 Python 2.6, 2.7, 3.3+ 、 MongoDB 版本 2.4, 2.6, 3.0, 3.2, and 3.4.

其实官方 Get Started 也挺清楚的,但是用的时候还是会遇到一些非常智障的问题。

安装

使用 pip 安装即可:

pip install mongo-connector

之后我们需要安装 mongo-connector 对应的目标系统,由于我用的是 ElasticSearch 5.x,所以安装:

pip install 'mongo-connector[elastic5]'

使用

首先我们要进行副本集的初始化,mongo-connector 本质上是使用副本集与 ElasticSearch 同步:

mongod --replSet myDevReplSet  # 启动 mongodb

之后在 mongo 的控制台中使用 rs.initiate() 初始化副本集,之后我们在 MongoDB 中修改的数据就会同步到副本集中了。

之后启动 mongo-connector 即可将副本集中的内容更新到 ElasticSearch:

mongo-connector -m localhost:27017 -t localhost:9200 -d elastic2_doc_manager

当然,理论很美好,现实很残酷,之前没有开副本集就写入的部分可能会遇到无法同步的问题,或者是有重新同步的需求:

重新同步,我们需要将副本集和 ElasticSearch 中的内容都清空,官方提供了文档:https://github.com/mongodb-labs/mongo-connector/wiki/Resyncing-the-Connector

默认会在 ElasticSearch 中自动建立 Index,但是如果你需要自己设置 mappings,也可以自己先行创建 Index,之后就会根据该设置写入。

如果启动完毕之后发现没有成功同步,但是新加入的内容都写入了,可能是数据没有在副本集中,最终我还是重新写了一遍数据,同步成功了。

植入部分

如果您觉得文章不错,可以通过赞助支持我。

如果您不希望打赏,也可以通过关闭广告屏蔽插件的形式帮助网站运作。

标签: 使用, 安装, mongodb

添加新评论