MongoDB——mongo-connector实例使用(for elasticsearch)

声明使用版本:

MongoDB         version 3.0.4

ElasticSearch   version 1.6.0

Python             version 2.7.10 使用其自带的pip 安装 Mongo-connector


MongoDB同步数据到ElasticSearch

(1)首先确保database---> index  collection----->type 要同步的数据集合名称及所在 的database相同

1.1 Mongo Connector gives each MongoDB database its own index in Elasticsearch. Each MongoDB collection becomes its own mapping type. For example, documents from the collection kittens in the database animals will put into the animals index in Elasticsearch with a mapping type of kittens

1.2 当然除了提前创建好对应的index和type的方式,也可以让ES自动创建

需要make sure that action.auto_create_index is set to true in your elasticsearch.yml.

1.3 如果存在空间数据类型  Please refer to the Elasticsearch documentation on setting up geospatial mapping types for points and shapes.需要提前设置mapping中该字段的类型为point或是shape类型,否则自动同步自动mapping无法侦测到空间字段类型,从而可能导致空间数据操作失败。


(2)由于mongo-connector原理是使用 MongoDB的操作日志oplog,所以必须配置Mongodb为副本集模式

mongo-connector replicates operations from the MongoDB oplog, so areplica set must be running before startup. For development purposes, you may find it convenient to run a one-node replica set


接下来是操作步骤:

 mongodb副本集模式配置

1.关闭运行的mongodb服务(net stop MongoDB)

2.创建mongodb实例(如下就创建一个名为rs0,端口为27017的实例)

    mongod --port 27017 --dbpath "D:\mongo\data" --replSet rs0

3.打开mongo.exe,启动一个新的副本集

     rs.initiate()

初始化后,就启动了一个mongodb副本集实例,在查看local下面的collections,发现其中多了oplog.rs集合


4.查看状态和副本集的配置

    rs.status()    


    rs.conf()



5.可以使用add方法添加副本集的成员

    rs.add(HOST_NAME:PORT)

6.判断当前运行的mongodb服务是否为主节点

    db.isMaster()



mongo-connector安装

pip install  elastic-doc-manager(for ES1.X)

pip install  elastic2_doc_manager(for ES2.X)

pip install mongo-connector


后面使用Python3.5.2 安装的命令有所不同

前面加上 python -m

 python -m pip install  elastic-doc-manager(for ES1.X)

 python -m pip install  elastic2_doc_manager(for ES2.X)

python -m pip install mongo-connector

mongo-connector 配置

mongo-connector  --auto-commit-interval=0 -m 192.168.1.180:27017 -t 192.168.1.180:9200 -d elastic_doc_manager 

由于采用的单机使用127.0.0.1

mongo-connector  --auto-commit-interval=0 -m 127.0.0.1:27017 -t  127.0.0.1:9200 -d elastic_doc_manager  -n test.test

  •     -m  Mongod实例的访问路径
  •  -t  Solr的BASE_URL
  •  -o  记录oplog处理时间戳的文件
  •  -n  mongo命名空间,是监听哪个database哪个collection的设置,以逗号分隔多个命名空间,这里是监听test库中的test集合
  •  -d  就是处理doc的py文件



测试同步

mongdb插入数据

db.col_02.insert({name:"renzhengfei", birth:"1954-03-21", sex:"man", company:"huawei"});

测试成功


参考:https://github.com/mongodb-labs/mongo-connector/wiki/Usage%20with%20ElasticSearch
           https://github.com/mongodb-labs/mongo-connector/wiki/Writing-Your-Own-DocManager

mongo-connector 2.0之后支持MongoDB中存储在GridFS中的大文件,具体步骤查看上面的参考链接1
同时我们可以扩展docManager 建立自定义docmanage,具体步骤查看上面的参考链接2

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值