Zrobiłem to w ten sposób:
Używam frameworka sails.js dla węzła i używam mongo jako DB.
Przede wszystkim zainstalowałem moduł elasticsearch za pomocą npm. Następnie dodałem ten kod w pliku o nazwie elasticSeach.js w sekcji konfiguracji.
Ma następujący 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
};
Następnie po prostu utwórz plik ElasticSearchService.js w którym wykonasz wszystkie operacje, takie jak wyszukiwanie, aktualizacja itp. Oto przykład metody indeksu elasticsearch do indeksowania wartości, która przyjmuje:
a) wpisać
b) przedmiot , który jest obiektem typu json, takim jak
item = {
"name" : "vishal",
"website" : "stackOverflow"
};
a metoda to
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);
});
});
}
Wywołaj tę metodę z dowolnego miejsca.
Używam obietnicy zwrócenia wartości. Nie musisz się martwić implementacją fragmentów i wszystkim. Dba o to Elastic.
Więcej informacji o typie i mapowaniach znajdziesz tutaj :https://www. elastic.co/guide/en/elasticsearch/guide/current/mapping.html