声明使用版本:
MongoDB同步数据到ElasticSearchMongoDB version 3.0.4
ElasticSearch version 1.6.0
Python version 2.7.10 使用其自带的pip 安装 Mongo-connector
(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 --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"});
测试成功