Направих го по следния начин:
Използвам рамка sails.js за възел и използвам mongo като DB.
Първо, инсталирах модул elasticsearch с помощта на npm. След това добавих този код във файл, наречен elasticSeach.js в секцията за конфигурация.
Той има следния код:
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
};
След това просто създайте файл ElasticSearchService.js в който ще извършвате всички операции като търсене, актуализиране и т.н. Ето пример за индексен метод на elasticsearch за индексиране на стойностите, който отнема:
а) тип
б) артикул , който е обект от тип json като
item = {
"name" : "vishal",
"website" : "stackOverflow"
};
и методът е
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);
});
});
}
Извикайте този метод от където пожелаете.
Използвам обещание за връщане на стойности. Не е нужно да се притеснявате за внедряването на фрагменти и всичко останало. Elastic се грижи за това.
Повече за типа и съпоставянията тук:https://www. elastic.co/guide/en/elasticsearch/guide/current/mapping.html