sql >> Base de Datos >  >> NoSQL >> MongoDB

Integración de mongodb con elasticsearch en entorno node.js

Lo he hecho de esta manera:

Estoy usando el framework sails.js para el nodo y usando mongo como base de datos.

En primer lugar, instalé el módulo elasticsearch usando npm. Luego agregué este código en un archivo llamado elasticSeach.js en la sección de configuración.

Tiene el siguiente código:

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

Después de eso, simplemente cree un archivo ElasticSearchService.js en el que realizará todas las operaciones como búsqueda, actualización, etc. Aquí hay un ejemplo de un método de índice de búsqueda elástica para indexar los valores, que toma:

a) tipo

b) elemento , que es un objeto de tipo json como

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

y el método es

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

Llama a este método desde donde quieras.

Estoy usando una promesa de devolver valores. No necesita preocuparse por la implementación de fragmentos y todo. Elastic se encarga de eso.

Más sobre tipos y asignaciones aquí:https://www.elastic.co/guide/en/elasticsearch/guide/current/mapping.html">https://www. elastic.co/guide/en/elasticsearch/guide/current/mapping.html