2012-02-04 6 views
11

OK, więc szukałem wszędzie w Internecie jakiejś dokumentacji dotyczącej konfiguracji MongoDB i Elasticsearch. Wygląda na to, że w głównym repozytorium elasticsearch znajduje się wtyczka do rzeki Mongodb, ale nie ma dokumentacji. Czy ktoś ma te dwie piękne technologie do wspólnej pracy?Konfigurowanie rzeki MongoDB dla Elasticsearch

+21

do faceta, który pod redakcją "rzeka" do "kierowca" - to miało być rzeka. –

Odpowiedz

17

To jest dość stare pytanie, ale opublikuję odpowiedź, na wypadek gdyby inni zastanawiali się nad tym samym pytaniem, szczególnie w przypadku nowych wersji ES wychodzących cały czas. Zajęło mi trochę czasu, aby mój ES pracował również z MongoDB.

  1. Najpierw zakładam, że masz zainstalowane ES i MongoDB. Upewnij się, że masz włączone oplory, jeśli nie używasz zestawów replik. Zajrzyj do here, jak to zrobić.

  2. Wtyczka rzeki ma zależność (elastyczne załączniki-mappery), więc upewnij się, że instalujesz ją jako pierwszą, aby zapobiec późniejszym problemom. Ten wiki ma niezbędne polecenia potrzebne do zainstalowania wtyczek. Zwróć uwagę na alternatywny link do pobierania wtyczki rzeki, jeśli używasz wersji ES 0.20.2 i wyższej.

  3. Ponownie uruchom ES.

  4. Użyj następującego polecenia w celu umożliwienia indeksowania:

    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. Aby wykonać wyszukiwanie, użyj curl -XGET 'http://localhost:9200/mongoindex/_search?q=field:value'

mam większość moich informacji z this website, ale czułem, że mogłem być usprawnionym o wiele więcej, stąd moje własne podejście.

0

Działa w niektórych konfiguracjach. Wersje pluginów sprężystych rzeki i mongodów mogą być niezbędne do funkcjonowania całego systemu.

Oto kroki, aby odtworzyć środowisko pracy

1) używać elasticsearch wersji 1.2.4. Pakiet dla Ubuntu to znajduje się tutaj: https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-1.2.4.deb

zainstalować go z dpkg -i /path/to/elasticsearch-1.2.4.deb

2) zainstalować wtyczkę rzecznego i jego zależności:

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 

Nowsze wersje odwzorowujący atachments wtyczki są dostępne, ale oficjalna wiki z Wtyczka mongo river sugeruje użycie 1.9.0.

3) MongoDB v2.4.9 na pewno współpracuje z pluginem elasticsearch. upewnić mongod zostanie uruchomiony z --replSet rs0 lub masz replSet=rs0 w mongod.conf Dalej, trzeba mieć pewność, że zestaw replik jest inicjowana w MongoDB: logowanie do Mongo konsola:

mongo 

Następnie wpisz:

rs.initiate() 
rs.status() 

4) Przygotowania zostały wykonane, teraz musisz zainicjować wtyczkę rzeki elasticsearch. Zakładając, że masz elasticsearch działa na localhost: 9200 i MongoDB jest 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) sprawdzić rs.config() na serwerze Mongo. Powinien zawierać rozpoznawalne nazwy hostów lub ips dla członków zestawu replik, z którymi mogłaby się skontaktować wtyczka rzeki mongodb. Wtyczka rzeki Elasticsearch połączy się z hostem określonym w mongodb.servers i pobierze konfigurację repliki. Następnie spróbuje połączyć się z głównym hostem zestawu replik przez nazwę hosta określoną w pliku rs.config(). Jeśli zamierzasz używać kontenerów doków do łączenia monogdb i elastycznego wyszukiwania przez plugin do rzeki, to jest to problem.

Można aktualizować rs config w następujący sposób:

mongo 

a następnie w Mongo shell

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