MongoDB 資料自動同步到 Elasticsearch

來源:互聯網
上載者:User

標籤:com   mysq   複製   intro   int   hub   部署   官方   支援中文   

我們產品中需要全文檢索索引的功能,後端資料存放區主要使用了 MySQL + MongoDB,而其中需要檢索的內容是在 MongoDB 中的。

MongoDB 本身是內建文本索引功能的,但是,不支援中文。術業有專攻,MongoDB 是資料存放區應用,那麼全文檢索索引就使用專業的全文檢索搜尋引擎吧。

預選的幾個選手有:Solr、Elasticsearch、Xapian、Sphinx、XunSearch。由於我們的資料量比較大,覺得現在單機已經有些力不從心了,MongoDB 也開始計劃做分區,那麼全文檢索搜尋如果內建分布式技能那就最合適不過了。經過一系列的考量,最後,我們就決定用 Elasticsearch 了。

現在後端程式是直接將資料寫到 MongoDB 中,我不想修改程式碼,不想在增刪改 MongoDB 中資料的同時去增刪改 Elasticsearch 中的資料。希望 MongoDB 中資料發送變化時自動同步到 Elasticsearch 中,這樣就可以最快地用上 Elasticsearch 了。

剛開始我找到的方案是利用 Elasticsearch 的 River 來同步資料,並在 GitHub 上到了 MongoDB River 外掛程式:elasticsearch-river-mongodb。但是,隨後我又在 Elasticsearch 官網上看了這篇部落格:《Deprecating Rivers》,官方已經在 1.5 以後的版本棄用 River,為了使用者的遷移,會一直保留到 2.0 版本。

於是,我得另尋方案了。然後我又在網上找到了另外一個方案:mongo-connector。這個是 MongoDB 官方的開發人員用 Python 寫的一個工具,目前支援將 MongoDB 的資料同步到 Solr、Elasticsearch、MongoDB 中,並且支援使用者自己擴充。看到 README 中的免責聲明,我有點覺得這是玩票性質的工具,但是還是抱著試試看的心態決定試試看了。

下面是部署過程:

  1. MongoDB 必須開啟複製集,如果已經開啟請忽略這一步:
    配置複製集的名稱:mongod --replSet myDevReplSet
    在 mongo shell 中初始化複製集:rs.initiate()

  2. 安裝 Elasticsearch,如果已經安裝請忽略這一步。

  3. 安裝 mongo-connector:
    先安裝 pip:

    yum install python-setuptools && easy_install pip

    通過 pip 安裝 mongo-connector:

    pip install mongo-connector
  4. 運行 mongo-connector:

    mongo-connector -m 127.0.0.1:27017 -t 127.0.0.1:9200 -d elastic_doc_manager

OK,現在,在 MongoDB 中增刪改資料,都能立刻同步到 Elasticsearch 中了。在試用過程中,mongo-connector 退出過兩次,其中一次斷開太久沒有發覺,害我不得不重新同步。還是有點不靠譜的感覺,可能還得專門寫個精靈,讓 mongo-connector 一直能在後台好好乾活。

拓展閱讀:

  • 用 mongodb + elasticsearch 實現中文檢索

  • 使用Mongo Connector和Elasticsearch實現模糊比對

MongoDB 資料自動同步到 Elasticsearch

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.