MongoDB数据导入ES

基于Monstache实现MongoDB数据导入ES

因为公司业务需求,需要将Mongodb中的数据导入ES中,所以就在网上看了很多相关的文档,但大部分的文章都是大同小异,巴拉巴拉的讲了一大堆原理,就是不讲怎么做的,或者有的写了怎么做的,但是步骤不是缺这就是少那的。但还是让我东拼西凑的让我实现了出来,所以整理这篇博客,避免再有人趟一遍我趟过的坑。

为什么最终选择Monstache来实现,因为:
Monstache基于MongoDB的oplog实现实时数据同步,支持并包括最新版本Mongodb与ES之间数据同步。Monstache支持数据库删除和集合删除,能确保ES端实时与源端数据保持一致,不仅能够将Mongodb历史数据导入ES,而且还能实时的将Mongodb中的新数据导入ES。最主要的是它实现起来非常方便快捷。
附上Monstache的官方网站:https://rwynn.github.io/monstache-site/

在这里插入图片描述

操作流程
(1) 搭建Monstache环境
(2) 配置同步任务
(3) 验证结果

步骤(1)
安装Go,并配置环境变量。
!Monstache数据同步依赖于Go语言,因此需要准备Go环境。
①下载Go安装包并解压:

wget https://dl.google.com/go/go1.14.4.linux-amd64.tar.gz
tar -C /usr/local -xzf go1.14.4.linux-amd64.tar.gz

②配置环境变量:

vi /etc/profile      #添加如下内容

export GOROOT=/usr/local/go
export GOPATH=/home/go/
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
export GOPROXY=https://mirrors.aliyun.com/goproxy/
:wq!                  #保存退出
source /etc/profile   #刷新环境变量

③安装Monstache:

cd /usr/local/
git clone https://github.com/rwynn/monstache.git
cd monstache
git branch            #查看当前的版本
> * rel6              #当前是rel6版本
git checkout rel5     #切换到5版本
go install            #安装monstache

!注意对应版本如下图,因为我使用的es版本是6的mongo是4,所以选择monstache 5版本。
在这里插入图片描述

步骤(2)
配置同步任务。
Monstache使用的MongoDB OPLOG作为一个事件源。需要确保通过mongodb副本集的方式生成的操作日志。在没有任何明确的配置前 也就是默认情况下,monstache会使用默认端口连接本地上的ES和MongoDB,并跟踪mongodb oplog。在monstache运行期间,mongodb的任何改动都会同步到ES中。
Monstache配置使用toml格式。
①进入monstache安装目录,创建并编辑配置文件:

cd /usr/local/monstache
vi config.toml       #这个文件要是没有的话就自己创建
# connect to MongoDB using the following URL 这项配置添加Mongodb的地址
mongo-url = "mongodb://root:****@dds-2ze7db822b241.mongodb.rds.aliyuncs.com:3717"
# connect to the Elasticsearch REST API at the following node URLs
elasticsearch-urls = ["http://10.32.5.86:9200"]
direct-read-namespaces = ["datahub_log.gateway_g2_log"]  #指定mongo中要导出数据库和集合
elasticsearch-user = "root"
elasticsearch-password = "******"    #ES服务器的密码
elasticsearch-max-conns = 4
dropped-collections = true
dropped-databases = true
resume = true
resume-strategy = 0
verbose = true
#cluster-name = 'es-cn-mp91kzb8m00******'
[[mapping]]
namespace = "datahub_log.gateway_g2_log"
index = "datahub_log"      #映射到ES中的索引名称
type = "gateway_g2_log"   #映射到ES中索引类型的名称

!配置参数说明如下:
在这里插入图片描述

②运行Monstache:

monstache -f config.toml

步骤(3)
验证结果登陆es服务器:

#查看所有的索引,查看是否成功导入datahub_log索引
curl  127.0.0.1:9200/_cat/indices?v  

#查看datahub_log索引的类型是否为gateway_g2_log
curl  127.0.0.1:9200/datahub_log/_mapping/

#统计索引内的数据是否和mongo的数据一致
curl  127.0.0.1:9200/datahub_log/_count

最后 如果还有不懂的朋友下面评论说出自己的问题,我看到会回复的!

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值