2012-02-04 62 views
11

好了,所以我到處找互聯網進行某種形式的文檔對如何建立的MongoDB和Elasticsearch上。看起來主要的elasticsearch github回購中有一個Mongodb河流插件,但沒有文檔。有沒有人得到這兩個可愛的技術一起工作?建立的MongoDB河邊Elasticsearch

+21

爲了誰主編的「河」到「驅動程序」的傢伙 - 它的意思是什麼河。 – 2012-02-05 09:51:18

回答

17

這是一個相當古老的問題,但我只是張貼我的答案的情況下,其他人想知道同樣的問題,特別是隨着ES出來所有的時間新版本。我花了一段時間才讓我的ES與MongoDB一起工作。

  1. 首先,我假設你已經安裝了ES和MongoDB。如果您不使用副本集,請確保您已啓用oplog。請參閱here如何操作。

  2. 河插件具有相關性(elasticsearch映射器,附件),所以一定要安裝第一次,以防止以後出現任何問題。此wiki具有安裝插件所需的必要命令。如果您使用ES 0.20.2或更高版本,請注意river插件的備用下載鏈接。

  3. 重啓ES。

  4. 使用以下命令啓用索引:

    curl -XPUT 'http://localhost:9200/_river/mongodb/_meta' -d ' 
    { 
        "type": "mongodb", 
        "mongodb": { 
         "db": "your-database-name", 
         "collection": "your-collection-name" 
        }, 
        "index": { 
         "name": "mongoindex", 
         "type": "your-type" 
        } 
    }' 
    
  5. 做搜索,使用curl -XGET 'http://localhost:9200/mongoindex/_search?q=field:value'

我得到了我的大部分信息來自this website,但我覺得它可能精簡更多,因此我自己的方法。

0

它工作在某些配置。 elasticsearch river plugin和mongodb的版本可能對整個系統的工作至關重要。

這裏是重現步驟的工作環境

1)使用elasticsearch版本1.2.4。對於Ubuntu的軟件包,它位於在這裏:​​https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-1.2.4.deb

dpkg -i /path/to/elasticsearch-1.2.4.deb

2安裝)安裝河流插件及其依賴:

cd /usr/share/elasticsearch && bin/plugin --install elasticsearch/elasticsearch-mapper-attachments/1.9.0 
cd /usr/share/elasticsearch && bin/plugin --install com.github.richardwilly98.elasticsearch/elasticsearch-river-mongodb/2.0.1 

新版本映射atachments插件可用,但官方的wiki mongo河插件建議使用1.9.0。

3)的MongoDB v2.4.9肯定可與elasticsearch河插件。 確保mongod的啓動與--replSet rs0,或者你在mongod.conf 接下來有replSet=rs0,你必須確保副本集MongoDB中啓動: 登錄MONGO控制檯:

mongo 

然後鍵入:

rs.initiate() 
rs.status() 

4)準備工作已經完成,現在您需要初始化elasticsearch river插件。 假設您已經elasticsearch在本地主機上運行:9200和MongoDB是蒙戈服務器上10.0.2.15:27017

curl -XPUT "localhost:9200/_river/feed/_meta" -d" 
     { 
      \"type\": \"mongodb\", 
      \"mongodb\": { 
       \"servers\": [ 
       {\"host\": \"10.0.2.15", \"port\": 27017} 
       ], 
       \"db\": \"YOUR_DB\", 
       \"collection\": \"YOUR_COLLECTION\" 
      }, 
      \"index\": { 
       \"name\": \"YOUR_ELASTIC_INDEX\", 
       \"type\": \"item\" 
      } 
     }" 

5)檢查rs.config()。它應該包含可以由mongodb river插件聯繫的副本集成員的可解析主機名或ips。 Elasticsearch river插件將連接到mongodb.servers中指定的主機並獲取副本配置。然後它將嘗試通過rs.config()中指定的主機名連接到副本集的主要主機。如果你正在使用docker容器來通過river插件來連接monogdb和elasticsearch,那麼這是一個問題。

你可以做更新RS配置如下:

mongo 

,然後在蒙戈外殼

cfg = rs.config() 
cfg.members[0].host = "12.34.56.78:27017" 
rs.reconfig(cfg)