2012-02-04 17 views
11

Ok, quindi ho cercato ovunque su Internet per una sorta di documentazione su come configurare MongoDB ed Elasticsearch. Sembra che ci sia un plugin per il fiume Mongodb nel repository github principale di elasticsearch, ma nessuna documentazione. Qualcuno ha ottenuto queste due adorabili tecnologie per lavorare insieme?Impostazione di MongoDB river per Elasticsearch

+21

Per il ragazzo che ha curato "fiume" a "driver" - è stato concepito per essere fiume. –

risposta

17

Questa è una domanda piuttosto vecchia, ma inserirò la mia risposta solo nel caso in cui gli altri si stiano ponendo la stessa domanda, specialmente con le nuove versioni di ES che escono continuamente. Mi ci è voluto un po 'per far funzionare anche il mio ES con MongoDB.

  1. In primo luogo, presumo che ES e MongoDB siano installati. Assicurati di avere oplogs attivati ​​se non stai usando i set di repliche. Consultare here su come farlo.

  2. Il plug-in del fiume ha una dipendenza (elasticsearch-mapper-attachments), quindi ASSICURI di installarlo per primo per evitare eventuali problemi in seguito. Questo wiki ha i comandi necessari per installare i plug-in. Prendere nota del link di download alternativo per il plugin del fiume se si utilizza ES 0.20.2 e versioni successive.

  3. Riavviare ES.

  4. Utilizzare il seguente comando per abilitare l'indicizzazione:

    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. Per eseguire una ricerca, utilizzare curl -XGET 'http://localhost:9200/mongoindex/_search?q=field:value'

ho ottenuto la maggior parte delle mie informazioni da this website, ma ho sentito che poteva essere razionalizzato molto di più, da qui il mio approccio.

0

Funziona in alcune configurazioni. Le versioni del plug-in del fiume elasticsearch e di mongodb potrebbero essere essenziali per il funzionamento dell'intero sistema.

Ecco procedura per riprodurre l'ambiente di lavoro

1) utilizzare elasticsearch versione 1.2.4. Pacchetto per Ubuntu si trova qui: https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-1.2.4.deb

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

2) installazione plug-fiume e le sue dipendenze:

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 

recenti versioni di mapper atachments plug-in sono disponibili, ma wiki ufficiale di Il plugin mongo river suggerisce di usare 1.9.0.

3) MongoDB v2.4.9 funziona sicuramente con il plugin fiume elasticsearch. assicurarsi mongod è lanciato con --replSet rs0 o hai replSet=rs0 in mongod.conf Successivamente, è necessario essere sicuri che set di repliche è iniziata in MongoDB: login per mongo console:

mongo 

Quindi digitare:

rs.initiate() 
rs.status() 

4) I preparativi sono stati fatti, ora è necessario avviare il plugin fiume elasticsearch. Supponendo che avete elasticsearch in esecuzione su localhost: 9200 e MongoDB è in 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) controllare rs.config() sul server di Mongo. Dovrebbe contenere nomi host o ips risolvibili per i membri della serie di repliche che potrebbero essere contattati dal plugin del fiume mongodb. Il plug-in del fiume Elasticsearch si connetterà all'host specificato in mongodb.servers e fetch replica config. Quindi proverà a connettersi all'host primario del set di repliche tramite il nome host specificato in rs.config(). Se stai per usare container docker per interconnettere monogdb ed elasticsearch tramite il plugin River, questo è un problema.

Si potrebbe aggiornare rs config effettuando le seguenti operazioni:

mongo 

e poi in Mongo sborsare

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