sql >> Database >  >> NoSQL >> MongoDB

Integratie van mongodb met elasticsearch in node.js-omgeving

Ik heb het op deze manier gedaan:

Ik gebruik sails.js framework voor node en gebruik mongo als DB.

Allereerst heb ik de elasticsearch-module geïnstalleerd met npm.Vervolgens heb ik deze code toegevoegd in een bestand met de naam elasticSeach.js in configuratiegedeelte.

Het heeft de volgende 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
};

Maak daarna gewoon een bestand ElasticSearchService.js waarin u alle bewerkingen uitvoert, zoals zoeken, bijwerken enz. Hier is een voorbeeld van een elasticsearch-indexmethode om de waarden te indexeren, die duurt:

a) type

b) item , wat een object is van het json-type zoals

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

en methode is

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

Roep deze methode aan waar je maar wilt.

Ik gebruik een belofte om waarden te retourneren. U hoeft zich geen zorgen te maken over de implementatie van de shard en zo. Elastic zorgt daarvoor.

Meer over type en mapping hier:https://www. elastic.co/guide/en/elasticsearch/guide/current/mapping.html




  1. MongoDB limiet opslaggrootte?

  2. Hoe banen te vernietigen die in de wachtrij zijn geplaatst door reddingswerkers?

  3. Mongodb recursieve zoekopdracht

  4. Hoe twee strings in mongoDB-veergegevens te vergelijken?