MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Integração do mongodb com elasticsearch no ambiente node.js


Eu tenho feito assim:

Estou usando o framework sails.js para node e usando mongo como DB.

Em primeiro lugar, instalei o módulo elasticsearch usando npm. Em seguida, adicionei este código em um arquivo chamado elasticSeach.js na seção de configuração.

Tem o seguinte 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
};

Depois disso, basta criar um arquivo ElasticSearchService.js no qual você fará todas as operações como pesquisar, atualizar etc. Aqui está um exemplo de um método de índice elasticsearch para indexar os valores, que leva:

a) tipo

b) item , que é um objeto do tipo json como
item = {
 "name" : "vishal",
 "website" : "stackOverflow"
};

e método é
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);
      });
  });
}

Chame esse método de onde quiser.

Estou usando uma promessa para retornar valores. Você não precisa se preocupar com a implementação do shard e tudo mais. A Elástica cuida disso.

Mais sobre tipo e mapeamentos aqui:https://www. elastic.co/guide/en/elasticsearch/guide/current/mapping.html