目录

  • 一、 需求
  • 二、 笔者环境
  • 三、 直接上同步任务配置
  • 启动


一、 需求

1、迁移MongoDB中的数据到Elasticsearch2、增量数据业务会从MQ写到MongoDB,但数据变更也要实时同步到Elasticsearch 经过多方位比较以及各种踩雷,我选择了monstache来完成这次的需求。不言而喻,它可以满足我前面提到的需求

二、 笔者环境

ES 7.8.0Mongo v4.2.15

monstache

mongodb与es区别 mongodb 和es_mongodb与es区别


省略安装步骤 因为随便找了一个博客直接安装 没有踩坑

三、 直接上同步任务配置

#启用调试日志,这项要放在最上面,否则日志打印不到文件(坑了我几个小时)
verbose = true  

#mongodb的链接地址
mongo-url = "mongodb://用户名:密码@地址:端口/?connect=direct"

#es的链接地址
elasticsearch-urls = ["es地址/"]

#要监听的mongodb的集合格式是 库名.集合名,可以写多个,也可以使用正则来匹配多个,相应配置项为 namespace-regex
#这里要注意!!!!
#建立Mongo 集群!!!
#建立Mongo 集群!!!
#建立Mongo 集群!!!不然无法完成修改数据以后的同步!! 而且还会一只报错!日志文件超级大!!只能进行一次全量同步或者增量同步!!!注意!!
direct-read-namespaces = ["XXx.XXx"]

#monstache最多开几个线程同步到es,默认为4
elasticsearch-max-conns = 8

#mongodb删除集合或库时是否同步删除es中的索引
dropped-collections = false
dropped-databases = false

# 更新es而不是覆盖
index-as-update = true


#记录同步位点,便于下次从该位置同步
resume = true


#生产环境记录日志必不可少,monstache默认是输出到标准输出的,这里指定它输出到指定的日志文件(这个也是踩坑踩出来的哦!)
[logs]
info = "D:/Javaenvir/elasticsearch/monstache-3b0ff3c/log/info.log"
warn = "D:/Javaenvir/elasticsearch/monstache-3b0ff3c/log/wran.log"
error = "D:/Javaenvir/elasticsearch/monstache-3b0ff3c/log/error.log"
trace = "D:/Javaenvir/elasticsearch/monstache-3b0ff3c/log/trace.log"


#高可用模式下需要配置集群名称,集群名称一样的进程会自动加入一个集群内,要注意这是个集群是高可用的,而不是负载均衡的。(看到其他文档里说这个参数是es集群的名称,其实并不是,自定义值)
#cluster-name = 'my-elasticsearch'


#mapping定义mongodb数据到es的索引名称和type,namespace是库名.集合名
#这里需要注意一件事:最好是在es中创建好你要的索引结构,关闭es的自动创建索引功能,不然monstace会给mongodb中所有的集合都创建一个索引。我这里就对应了两个索引
[[mapping]]
namespace = "yeyoo_data_server.data_msg_log"
index = "data_msg_log"

#[[mapping]]
#namespace = "xxx.user"
#index = "b"

启动

进入bin目录如图

mongodb与es区别 mongodb 和es_3c_02


mongodb与es区别 mongodb 和es_java_03


mongodb与es区别 mongodb 和es_3c_04


mongodb与es区别 mongodb 和es_java_05


mongodb与es区别 mongodb 和es_mongodb_06


monstache.exe -f D:\Javaenvir\elasticsearch\monstache-3b0ff3c\build\windows-amd64\config.toml

config.toml 为配置文件 需要自己创建编写

最后大功告成!

mongodb与es区别 mongodb 和es_java_07