從mongo倒數(shù)據(jù)到elasticsearch也是一件挺煩人的事情彪腔。雖然聽說有同步工具,但是因為沒什么時間,所以一直是寫腳本從mongo到elasticsearch穗熬。
但是最近有點空了,開始研究如何偷懶丁溅。唤蔗。。
mongo到elasticsearch最早的工具是river窟赏。但是后期由于不維護妓柜,被mongo-connector取代。
由于mongo這樣的數(shù)據(jù)庫沒有觸發(fā)器涯穷,因此無法像mysql那樣直接玩棍掐。mongo-connector的作者采用了replicaSet,在副本集從primary同步數(shù)據(jù)的時候求豫,通過oplog來知道有哪些新插入的數(shù)據(jù)塌衰,最后同步到elasticsearch。因此蝠嘉,同步有一定的延遲性最疆。
當前的elasticsearch版本是5.1.1, mongo版本2.4.10
首先安裝mongo-connector
pip install mongo-connector
因為elasticsearch的緣故,還需要安裝對應的doc manager:
pip install 'mongo-connector[elastic5]'
完成后按照文檔同步數(shù)據(jù)庫, 這里mongo副本的配置參照之前的文章:
mongo-connector -m localhost:10001 -t localhost:9200 -d elastic2_doc_manager
這里需要注意蚤告,由于版本的不同努酸,使用的是elastic2_doc_manager。而不是elastic_doc_manager
連接es, 就能看到有新的索引創(chuàng)建好并同步了數(shù)據(jù):
from elasticsearch import Elasticsearch
es = Elasticsearch()
es.indices.get_alias()
es.search(index='my_test')
mongo帶權限的同步還沒研究過杜恰。等有空再說获诈。