2016-07-17 24 views
1

ich an einem Projekt arbeite, die folgende Konfiguration hat:Integration von mongodb mit Elasticsearch in node.js Umgebung

  • Ich habe einen Amazon EC2-Cluster mit einem Master, 3 Config Server und 3 Shard-Server.
  • Der Master hat eine node.js-Anwendung ausgeführt, die im Grunde eine REST-API ist, die mit dem Express.js-Modul geschrieben wurde.
  • Ich benutze mongodb als Datenbank. Der Master hat einen "Mongo" -Service, der die Daten in 3 Shard-Server zerlegt. Auf diesen Servern läuft der Dienst "mongod".

Mit diesem Setup möchte ich elasticsearch integrieren, um Suchanfragen durchzuführen. Zu diesem Zweck möchte ich eine Route in meiner REST-API-Anwendung node.js hinzufügen, um eine Suchabfrage für die in Shards gespeicherten Daten durchzuführen.

Gibt es zusätzliche Schritte, da ich drei Shards auf unabhängigen Rechnern laufen habe? Wie konfiguriere ich elasticsearch, um auf die Daten von den Shards zuzugreifen, um den Index zu erstellen? Erkennt es diese Konfiguration automatisch und erstellt den Index? Kann mir bitte jemand die Schritte geben, denen ich folgen soll?

+0

lesen ES docs, alle Ihre Fragen Antworten gibt –

+0

@VsevolodGoloviznin Vielen Dank für Ihre Antwort. Kannst du mich auf eine Ressource hinweisen? –

+0

Google einfach für ES-Dokumentation –

Antwort

2

Ich habe es so gemacht:

Ich sails.js Rahmen für die Knoten und mit Mongo als DB verwenden.

Zuerst habe ich Elasticsearch-Modul mit Npm installiert. Dann wurde dieser Code in eine Datei mit dem Namen elasticSeach.js in Config-Abschnitt hinzugefügt.

Es hat den folgenden Code ein:

var elasticsearch = require('elasticsearch'), 

    index = "Ur_elastic_index_name_goes_here", 
    client = new elasticsearch.Client({ 
    host: 'localhost:9200', 
    log: 'trace' 
    }); 

module.exports.elasticSearchClient = client; 

module.exports.elasticSearchConfig = { 
    index: index 
}; 

Danach erstellen Sie einfach eine Datei ElasticSearchService.js, in dem Sie alle Operationen wie die Suche tun, aktualisieren usw. Hier ist ein Beispiel für eine Elasticsearch Index-Methode auf die Werte Index, der nimmt:

a) Typ

b) Artikel, die ein Objekt von json Typ ist wie

item = { 
"name" : "vishal", 
"website" : "stackOverflow" 
}; 

und Verfahren ist

function indexItem(type, item) { 
    return Q.promise(function(resolve, reject){ 
    elasticSearchClient 
     .index({ 
     index: elasticSearchConfig.index, 
     type: type, 
     body: item 
     }) 
     .then(function (response) { 
     sails.log.info("ElasticSearchService#indexItem :: Response :: ", response); 
     return resolve(response); 
     }) 
     .catch(function(err) { 
     sails.log.error("ElasticSearchService#indexItem :: Error :: ", err); 
     return reject(err); 
     }); 
    }); 
} 

Rufen Sie diese Methode aus, wo immer Sie wollen.

Ich verwende ein Versprechen, um Werte zurückzugeben. Sie müssen sich nicht um die Shard-Implementierung kümmern. Elastic kümmert sich darum.

Mehr über Art und Zuordnungen hier: https://www.elastic.co/guide/en/elasticsearch/guide/current/mapping.html