python :3.6.0
ELasticsearch:5.5.0
MongoDB:3.0.6
mongo連接工具:NOSQLBooster
使用自帶的pip 安裝mongo-connector
注意:mongo-connector原理是使用Mongo的操作日誌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
1、安裝mongodb---忽略
2、關閉運行的mongodb服務,以下多種方式
- 使用net stop MongoDB
- 登陸mongo -->use admin --> db.shutdownServer()
- mongod --shutdown -dbpath /mongodb/data
- 使用kill命令
①查看mongo相關進程
ps -ef |grep mongo
②kill mongo進程
備註:可以使用看kill命令,給mongod進程發送SIGINT或者SIGTERM信號,
即使用“kill -2 PID”或者“kill -15 PID”
建議不要使用“kill -9 pid”,因爲如果MongoDB運行在沒開啓日誌(--journal)的情況下,可能會造成數據損失
3、創建mongodb(如下創建一個名爲rs0,端口爲27017的實例)
mongod --port 27017 --dbpath "D:\mongo\data" --replSet rs0
4、連接mongo,啓動一個副本集
$mongo
>rs.initiate() ---必須
>rs.status() -----可查看狀態(不必須)
>rs.conf() -----可查看配置(不必須)
>rs.add(HOST_NAME:PORT) --可添加副本集成員(不必須)
5、mongo-connector安裝
python -m pip install elastic2_doc_manager(for ES2.X)
python -m pip install mongo-connector
6、開始同步
由於採用的單機使用127.0.0.1,執行下面命令:
mongo-connector --auto-commit-interval=0 -m 127.0.0.1:27017 -t 127.0.0.1:9200 -d elastic2_doc_manager
命令解釋如下:
-m Mongod實例的訪問路徑
-t Solr的BASE_URL
-o 記錄oplog處理時間戳的文件
-n mongo命名空間,是監聽哪個database哪個collection的設置,以逗號分隔多個命名空間,這裏是監聽test庫中的test集合
-d 就是處理doc的py文件
7、新開一個窗口,連接mongo,插入數據做測試
>use runoob
>db.col_02.insert({name:"renzhengfei", birth:"1954-03-21", sex:"man", company:"huawei"});
> db.col_03.insert({name:"renzhengfei", birth:"1954-03-21", sex:"man", company:"huawei"});
得到如下結果:
報錯:
urllib3.exceptions.ReadTimeoutError: HTTPConnectionPool(host='127.0.0.1', port=9200): Read timed out. (read timeout
解決辦法:找到文件:elastic2_doc_manager.py
$vim /usr/python36/lib/python3.6/site-packages/mongo_connector/doc_managers/elastic2_doc_manager.py
將文件中的self.elastic = Elasticsearch(hosts=url, **client_options)
修改爲self.elastic = Elasticsearch(hosts=url,timeout=200, **client_options)
重新執行mongo-connector同步代碼,測試成功:
以上測試中,在單機mongo添加數據後,需要約2分鐘作用才能在elasticsearch中刷新看到同步的數據,具體問題還待研究
參考鏈接:
https://blog.csdn.net/shiyaru1314/article/details/52468436
https://blog.csdn.net/laoyang360/article/details/51842822
http://www.bankaiyuan.com/t/209
https://blog.csdn.net/zhujq_icode/article/details/81318687
https://es.xiaoleilu.com/010_Intro/25_Tutorial_Indexing.html(Elasticsearch權威指南(中文版))