我正在一个具有以下设置的项目:
通过此设置,我想集成elasticsearch来执行搜索查询。为此,我想在我的node.js REST API应用程序中添加一条路由,以对存储在分片中的数据执行搜索查询。
如果我在独立计算机上运行三个分片,是否还需要执行其他步骤?如何配置Elasticsearch以访问分片中的数据以建立索引?它会自动检测到此配置并建立索引吗?有人可以向我提供完成此操作应遵循的步骤吗?
我这样做是这样的:
我使用的是节点的sails.js框架,并使用mongo作为数据库。
首先,我已经使用npm安装了elasticsearch模块。然后将此代码添加到配置部分的名为 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索引方法对值进行索引的示例,该方法需要:
a) 类型
b) item ,它是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); }); }); }
从任何地方调用此方法。
我使用诺言返回值。您无需担心分片实现及其他所有问题。弹性负责。
有关类型和映射的更多信息,请参见:https : //www.elastic.co/guide/en/elasticsearch/guide/current/mapping.html