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

Integration af mongodb med elasticsearch i node.js miljø

Jeg har gjort det på denne måde:

Jeg bruger sails.js framework til node og bruger mongo som DB.

Først og fremmest har jeg installeret elasticsearch-modulet ved hjælp af npm. Derefter tilføjede denne kode i en fil kaldet elasticSeach.js i konfigurationssektionen.

Den har følgende kode:

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

Derefter skal du blot oprette en fil ElasticSearchService.js hvor du skal udføre alle operationer som søgning, opdatering osv. Her er et eksempel på en elastisk søgningsindeksmetode til at indeksere værdierne, som tager :

a) type

b) vare , som er et objekt af json-typen som

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

og metode er

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

Kald denne metode fra, hvor du vil.

Jeg bruger et løfte om at returnere værdier. Du behøver ikke bekymre dig om implementering af shard og det hele. Det sørger Elastic for.

Mere om type og kortlægninger her :https://www. elastic.co/guide/en/elasticsearch/guide/current/mapping.html




  1. Hvordan får man en MongoDB-forespørgsel til at sortere på strenge med -number postfix?

  2. Sikring af MongoDB mod eksterne injektionsangreb

  3. Kortlæg en 'array af objekter' til en simpel række af nøgleværdier

  4. MongoDB-tjenesten kører ikke i Fedora