Jag har gjort så här:
Jag använder sails.js framework för nod och använder mongo som DB.
Först och främst har jag installerat elasticsearch-modulen med npm. Sedan lade jag till den här koden i en fil som heter elasticSeach.js i konfigurationsavsnittet.
Den har följande kod:
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
};
Efter det skapar du bara filen ElasticSearchService.js där du kommer att göra alla operationer som sökning, uppdatering etc. Här är ett exempel på en elasticsearch-indexmetod för att indexera värdena, vilket tar :
a) typ
b) objekt , som är ett objekt av json-typ som
item = {
"name" : "vishal",
"website" : "stackOverflow"
};
och metoden är
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);
});
});
}
Ring den här metoden var du vill.
Jag använder ett löfte om att returnera värden. Du behöver inte oroa dig för implementering av skärvor och allt. Elastic tar hand om det.
Mer om typ och mappningar här :https://www. elastic.co/guide/en/elasticsearch/guide/current/mapping.html