最近在做数据统计功能,需要将mongodb数据实时同步到 elasticsearch 中。目前找到的方案有两种
1、通过flink mongodb cdc
flink mongodb cdc 的优点是比较灵活,可以将mongodb中的数据同步到任意支持的目标库中,不限于elasticsearch ,但是目前在使用的过程共发现同步时会自动加一个Changelog Normalize 算子,背压比较严重。网上找了很多资料,暂时无法解决。
2、monstache 优点的话就是同步速度很快暂时没有发现性能问题,缺点也比较明显就是只能同步mongodb 数据到elasticsearch 中。
docker 中部署monstache(需要注意monstache版本要与elasticsearch 版本匹配)
docker run --privileged --name monstache -v /home/docker/monstache/config/monstache.config.toml:/app/monstache.config.toml -d -t rwynn/monstache '-f' '/app/monstache.config.toml'
monstache.config.toml 内容如下
1 # ip地址注意要修改 2 mongo-url = "mongodb://xx.x.xxx.xxx:27017,xx.x.xxx.xxx:27018,xx.x.xxx.xxx:27019" 3 # ip地址注意要修改 4 elasticsearch-urls = ["http://xx.x.xxx.xxx:9200"] 5 # mydb指的是需要同步的数据库 6 direct-read-namespaces = ["xx.xxxx","xx.xxxx","xx.xxxx"] 7 change-stream-namespaces = ["xx.xxxx","xx.xxxx","xx.xxxx"] 8 #elasticsearch-user = "elastic" 9 #elasticsearch-password = "pwd" 10 #elasticsearch-max-conns = 4 11 dropped-collections = true 12 dropped-databases = true 13 resume = true 14 resume-strategy = 0 15 verbose = true 16 cluster-name = 'docker-cluster' 17 18 [[mapping]] 19 namespace = "xx.xxxx" 20 index = "xxxx" 21 type= "type-xxx" 22 23 [[mapping]] 24 namespace = "xx.xxxx" 25 index = "xxxx" 26 type= "type-xxx" 27 28 [[mapping]] 29 namespace = "xx.xxxx" 30 index = "xxxx" 31 type= "type-xxx"
标签:xxxx,mongodb,xxx,xx,monstache,elasticsearch From: https://www.cnblogs.com/luozhiji/p/16725168.html