MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Jak korzystać z Elasticsearch z MongoDB?

Ta odpowiedź powinna wystarczyć, abyś skonfigurował się do śledzenia tego samouczka na temat budowania funkcjonalnego komponentu wyszukiwania za pomocą MongoDB, Elasticsearch i AngularJS.

Jeśli chcesz korzystać z wyszukiwania aspektowego z danymi z interfejsu API, możesz chcieć spojrzeć na Repozytorium Ptaków Matthiasna firmy Matthiasn.

Oto jak można skonfigurować pojedynczy węzeł Elasticsearch „klaster” do indeksowania MongoDB do użytku w aplikacji NodeJS, Express na nowej instancji EC2 Ubuntu 14.04.

Upewnij się, że wszystko jest aktualne.

sudo apt-get update

Zainstaluj NodeJS.

sudo apt-get install nodejs
sudo apt-get install npm

Zainstaluj MongoDB — te kroki pochodzą bezpośrednio z dokumentacji MongoDB. Wybierz dowolną wersję, z którą Ci odpowiada. Pozostaję przy wersji 2.4.9, ponieważ wydaje się, że jest to najnowsza wersja, którą MongoDB-River obsługuje bez problemów.

Zaimportuj publiczny klucz GPG MongoDB.

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10

Zaktualizuj listę źródeł.

echo 'deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' | sudo tee /etc/apt/sources.list.d/mongodb.list

Zdobądź pakiet 10gen.

sudo apt-get install mongodb-10gen

Następnie wybierz swoją wersję, jeśli nie chcesz, aby była najnowsza. Jeśli konfigurujesz swoje środowisko na maszynie z systemem Windows 7 lub 8, trzymaj się z daleka od wersji 2.6, dopóki nie naprawią pewnych błędów podczas uruchamiania go jako usługi.

apt-get install mongodb-10gen=2.4.9

Zapobiegaj podbijaniu wersji instalacji MongoDB podczas aktualizacji.

echo "mongodb-10gen hold" | sudo dpkg --set-selections

Uruchom usługę MongoDB.

sudo service mongodb start

Twoje pliki bazy danych to domyślnie /var/lib/mongo, a pliki dziennika to /var/log/mongo.

Stwórz bazę danych przez powłokę mongo i wepchnij do niej kilka fikcyjnych danych.

mongo YOUR_DATABASE_NAME
db.createCollection(YOUR_COLLECTION_NAME)
for (var i = 1; i <= 25; i++) db.YOUR_COLLECTION_NAME.insert( { x : i } )

Teraz przekonwertuj samodzielną bazę MongoDB na zestaw replik.

Najpierw zamknij proces.

mongo YOUR_DATABASE_NAME
use admin
db.shutdownServer()

Teraz uruchamiamy MongoDB jako usługę, więc nie przekazujemy opcji „--replSet rs0” w argumencie wiersza poleceń, gdy ponownie uruchamiamy proces mongod. Zamiast tego umieszczamy go w pliku mongod.conf.

vi /etc/mongod.conf

Dodaj te wiersze, podając ścieżki bazy danych i dziennika.

replSet=rs0
dbpath=YOUR_PATH_TO_DATA/DB
logpath=YOUR_PATH_TO_LOG/MONGO.LOG

Teraz ponownie otwórz powłokę mongo, aby zainicjować zestaw replik.

mongo DATABASE_NAME
config = { "_id" : "rs0", "members" : [ { "_id" : 0, "host" : "127.0.0.1:27017" } ] }
rs.initiate(config)
rs.slaveOk() // allows read operations to run on secondary members.

Teraz zainstaluj Elasticsearch. Po prostu śledzę ten pomocny opis.

Upewnij się, że Java jest zainstalowana.

sudo apt-get install openjdk-7-jre-headless -y

Na razie trzymaj się wersji 1.1.x, dopóki błąd wtyczki Mongo-River nie zostanie naprawiony w wersji 1.2.1.

wget https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-1.1.1.deb
sudo dpkg -i elasticsearch-1.1.1.deb

curl -L http://github.com/elasticsearch/elasticsearch-servicewrapper/tarball/master | tar -xz
sudo mv *servicewrapper*/service /usr/local/share/elasticsearch/bin/
sudo rm -Rf *servicewrapper*
sudo /usr/local/share/elasticsearch/bin/service/elasticsearch install
sudo ln -s `readlink -f /usr/local/share/elasticsearch/bin/service/elasticsearch` /usr/local/bin/rcelasticsearch

Upewnij się, że /etc/elasticsearch/elasticsearch.yml ma włączone następujące opcje konfiguracji, jeśli na razie programujesz tylko na jednym węźle:

cluster.name: "MY_CLUSTER_NAME"
node.local: true

Uruchom usługę Elasticsearch.

sudo service elasticsearch start

Sprawdź, czy działa.

curl http://localhost:9200

Jeśli widzisz coś takiego, to jesteś dobry.

{
  "status" : 200,
  "name" : "Chi Demon",
  "version" : {
    "number" : "1.1.2",
    "build_hash" : "e511f7b28b77c4d99175905fac65bffbf4c80cf7",
    "build_timestamp" : "2014-05-22T12:27:39Z",
    "build_snapshot" : false,
    "lucene_version" : "4.7"
  },
  "tagline" : "You Know, for Search"
}

Teraz zainstaluj wtyczki Elasticsearch, aby mogło grać z MongoDB.

bin/plugin --install com.github.richardwilly98.elasticsearch/elasticsearch-river-mongodb/1.6.0
bin/plugin --install elasticsearch/elasticsearch-mapper-attachments/1.6.0

Te dwie wtyczki nie są potrzebne, ale są dobre do testowania zapytań i wizualizacji zmian w indeksach.

bin/plugin --install mobz/elasticsearch-head
bin/plugin --install lukas-vlcek/bigdesk

Uruchom ponownie Elasticsearch.

sudo service elasticsearch restart

Na koniec zindeksuj kolekcję z MongoDB.

curl -XPUT localhost:9200/_river/DATABASE_NAME/_meta -d '{
  "type": "mongodb",
  "mongodb": {
    "servers": [
      { "host": "127.0.0.1", "port": 27017 }
    ],
    "db": "DATABASE_NAME",
    "collection": "ACTUAL_COLLECTION_NAME",
    "options": { "secondary_read_preference": true },
    "gridfs": false
  },
  "index": {
    "name": "ARBITRARY INDEX NAME",
    "type": "ARBITRARY TYPE NAME"
  }
}'

Sprawdź, czy Twój indeks jest w Elasticsearch

curl -XGET http://localhost:9200/_aliases

Sprawdź stan klastra.

curl -XGET 'http://localhost:9200/_cluster/health?pretty=true'

Prawdopodobnie jest żółty z kilkoma nieprzypisanymi odłamkami. Musimy powiedzieć Elasticsearch, z czym chcemy pracować.

curl -XPUT 'localhost:9200/_settings' -d '{ "index" : { "number_of_replicas" : 0 } }'

Sprawdź ponownie stan klastra. Powinno być teraz zielone.

curl -XGET 'http://localhost:9200/_cluster/health?pretty=true'

Idź grać.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB WYBIERZ LICZENIE GRUPY WG

  2. Mongodb Explain for Aggregation Framework

  3. Nie można znaleźć dokumentów przeszukujących według ObjectId przy użyciu Mongoose

  4. MongoDB:Znajdź dokument podrzędny w parametrach dopasowania tablicy

  5. Kolekcja zamków Mongodb do momentu ustawienia flagi?