MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Intégration de mongodb avec elasticsearch dans l'environnement node.js

Je l'ai fait de cette façon :

J'utilise le framework sails.js pour le nœud et mongo comme base de données.

Tout d'abord, j'ai installé le module elasticsearch à l'aide de npm. Ensuite, j'ai ajouté ce code dans un fichier appelé elasticSeach.js dans la section de configuration.

Il a le code suivant :

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

Après cela, créez simplement un fichier ElasticSearchService.js dans lequel vous ferez toutes les opérations comme rechercher, mettre à jour etc. Voici un exemple de méthode d'indexation elasticsearch pour indexer les valeurs, qui prend :

a) tapez

b) élément , qui est un objet de type json comme

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

et la méthode est

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

Appelez cette méthode où que vous soyez.

J'utilise une promesse de retour de valeurs. Vous n'avez pas à vous soucier de la mise en œuvre des fragments et de tout. Elastic s'en charge.

Plus d'informations sur le type et les mappages ici :https://www. elastic.co/guide/en/elasticsearch/guide/current/mapping.html