MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Integration von Mongodb mit Elasticsearch in die node.js-Umgebung

Ich habe es so gemacht:

Ich verwende das sails.js-Framework für den Knoten und Mongo als DB.

Zuerst habe ich das Elasticsearch-Modul mit npm installiert. Dann habe ich diesen Code in einer Datei namens elasticSeach.js hinzugefügt im Konfigurationsabschnitt.

Es hat den folgenden Code:

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
};

Erstellen Sie danach einfach eine Datei ElasticSearchService.js in dem Sie alle Operationen wie Suchen, Aktualisieren usw. ausführen. Hier ist ein Beispiel für eine Elasticsearch-Indexmethode zum Indizieren der Werte, die Folgendes benötigt:

a) tippen

b) Element , das ein Objekt vom Typ json wie

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

und Methode 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 von überall aus auf.

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

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