前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Elasticsearch最佳实践之从MongoDB到Elasticsearch

Elasticsearch最佳实践之从MongoDB到Elasticsearch

原创
作者头像
老生姜
修改2018-12-07 22:50:14
7.2K3
修改2018-12-07 22:50:14
举报
文章被收录于专栏:腾讯云Elasticsearch Service

同步工具简介

本文采用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的方案。

mongo-connector
mongo-connector

同步工具安装

一. 安装python(本文以python2.7为例)

https://www.python.org/downloads/ 下载所需版本的python。

二. 安装mongo-connector

(一)如果你的机器可以连接到外网,那安装过程会非常简单:

1. 安装pip
pip-10.0.1
pip-10.0.1
  • 下载后解压,进入pip-10.0.1目录,执行 下面的命令安装即可
代码语言:txt
复制
python setup.py install
2. 安装mongo-connector

根据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'

(二)如果你的机器无法连接到外网:

1. 请依次安装以下组件:

此处以安装pymongo为例:

pymongo
pymongo
  • 下载后解压,进入pymongo-3.7.0目录,执行下面的命令安装即可
代码语言:txt
复制
python setup.py install
2. 安装mongo-connector
代码语言:txt
复制
# clone 代码
git clone https://github.com/mongodb-labs/mongo-connector.git

# 进入mongo-connector-master目录,执行安装命令
python setup.py install
3.安装 elastic2-doc-manager
代码语言:txt
复制
# 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]

同步工具使用

mongo-connector 启动命令

代码语言:txt
复制
# 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

重要参数说明:

代码语言:txt
复制
-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 命令查看

举例说明

1. MongoDB中的数据如下:

mongodb
mongodb

以 db(feeds),collection(log)为例,数据样例:

data
data

2. 启动mongo-connector

  • 启动命令
代码语言:txt
复制
mongo-connector -m 127.0.0.1:7001 -a test_user -p test_password -t 127.0.0.1:9200 -d elastic2_doc_manager &

3. 输出到Elasticsearch的数据

  • index
index
index
  • doc
doc
doc

4. 注意事项

  1. mongodb必须开启副本集(Replica Set)。开启副本集才会产生oplog,副本拷贝主分片的oplog并通过oplog与主分片进行同步。mongo-connector也是通过oplog进行数据同步,故必须开启副本集。
  2. 使用mongo-connector命令同步数据时,-m参数中的mongodb地址应该是主/从分片的地址,从该地址登录可以看见并操作local数据库(oplog存储在local.oplog.rs),不能使用mongos地址。
  3. 使用mongo-connector命令同步数据时 ,mongo-connector的oplog(参照-o参数)不能随便删除,否则会引起重新同步所有数据的问题。该问题可以通过--no-dump选项关闭。
  4. 若发现同步速度过慢,可以通过调整bulkSize可以来提升同步速度,配置参考:https://github.com/mongodb-labs/mongo-connector/wiki/Configuration-Options#docmanagersindexbulksize

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 同步工具简介
  • 同步工具安装
    • 一. 安装python(本文以python2.7为例)
      • 二. 安装mongo-connector
        • (一)如果你的机器可以连接到外网,那安装过程会非常简单:
        • (二)如果你的机器无法连接到外网:
    • 同步工具使用
      • mongo-connector 启动命令
        • 举例说明
          • 1. MongoDB中的数据如下:
          • 2. 启动mongo-connector
          • 3. 输出到Elasticsearch的数据
          • 4. 注意事项
      相关产品与服务
      Elasticsearch Service
      腾讯云 Elasticsearch Service(ES)是云端全托管海量数据检索分析服务,拥有高性能自研内核,集成X-Pack。ES 支持通过自治索引、存算分离、集群巡检等特性轻松管理集群,也支持免运维、自动弹性、按需使用的 Serverless 模式。使用 ES 您可以高效构建信息检索、日志分析、运维监控等服务,它独特的向量检索还可助您构建基于语义、图像的AI深度应用。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档