本文采用mongo-connector作为MongoDB到Elasticsearch的同步工具。mongo-connector是基于python开发的实时同步服务工具,它可以创建一个从MongoDB簇到一个或多个目标系统的管道,目标系统包括:Solr,Elasticsearch,或MongoDB簇等。
该工具在MongoDB与目标系统间同步数据,并跟踪MongoDB的oplog,保持操作与MongoDB的实时同步
。 因此它要求mongo运行在replica-set模式,并需要elastic2-doc-manager插件的支持,才能将数据同步至Elasticsearch集群。
本文以MongoDB 3.2.10的数据导出至Elasticsearch 5.6.4为例,介绍将MongoDB的数据实时同步到Elasticsearch的方案。
到https://www.python.org/downloads/ 下载所需版本的python。
python setup.py install
根据Elasticsearch的版本,选择合适的同步工具版本,执行下表中的安装命令即可:
Target System | Install Command |
---|---|
Elasticsearch 1.x | pip install 'mongo-connectorelastic' |
Elasticsearch 2.x | pip install 'mongo-connectorelastic2' |
Elasticsearch 5.x | pip install 'mongo-connectorelastic5' |
此处以安装pymongo为例:
python setup.py install
# clone 代码
git clone https://github.com/mongodb-labs/mongo-connector.git
# 进入mongo-connector-master目录,执行安装命令
python setup.py install
# clone 代码
git clone https://github.com/mongodb-labs/elastic2-doc-manager.git
# 重命名文件夹
mv elastic2-doc-manager-master elastic2-doc-manager
# 执行安装命令,注意此处选取合适elastic的版本!!!版本格式类似上面安装mongo-connector的版本格式
pip install ./elastic2-doc-manager[elastic5]
# Elasticsearch 1.x
mongo-connector -m localhost:27017 -t localhost:9200 -d elastic_doc_manager
# Elasticsearch 2.x, 5.x
mongo-connector -m localhost:27017 -t localhost:9200 -d elastic2_doc_manager
重要参数说明:
-m mongodb_host:port —— 数据源地址,mongodb数据库地址。
-t target_host:port —— 数据目的地地址,elasticsearch集群地址。
-d xxx_doc_manager —— 数据目的地的document类型,elastic2_doc_manager或elastic_doc_manager。
-n db.collection ... —— 待同步的数据库及其collection。默认同步所有数据库。
-a admin-username —— admin用户名
-p password —— 密码
更过参数,请通过mongo-connector -h 命令查看
以 db(feeds),collection(log)为例,数据样例:
mongo-connector -m 127.0.0.1:7001 -a test_user -p test_password -t 127.0.0.1:9200 -d elastic2_doc_manager &
bulkSize
可以来提升同步速度,配置参考:https://github.com/mongodb-labs/mongo-connector/wiki/Configuration-Options#docmanagersindexbulksize原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。