MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Integrazione di mongodb con elasticsearch nell'ambiente node.js

L'ho fatto in questo modo:

Sto usando il framework sails.js per node e sto usando mongo come DB.

Prima di tutto, ho installato il modulo elasticsearch usando npm. Poi ho aggiunto questo codice in un file chiamato elasticSeach.js nella sezione di configurazione.

Ha il seguente codice:

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

Dopodiché, crea semplicemente un file ElasticSearchService.js in cui eseguirai tutte le operazioni come ricerca, aggiornamento, ecc. Ecco un esempio di metodo di indice elasticsearch per indicizzare i valori, che richiede:

a) digitare

b) oggetto , che è un oggetto di tipo json come

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

e il metodo è

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

Chiama questo metodo da dove vuoi.

Sto usando una promessa per restituire valori. Non devi preoccuparti dell'implementazione dello shard e tutto il resto. Elastic si occupa di questo.

Maggiori informazioni su tipo e mappature qui:https://www. elastic.co/guide/en/elasticsearch/guide/current/mapping.html