node.js - 如何检查 ElasticSearch 客户端是否已连接?

标签 node.js elasticsearch

我正在使用 elasticsearch-js (NodeJS),只要 ElasticSearch 正在运行,一切都会正常运行。但是,在尝试调用客户端的一种方法之前,我想知道我的连接是否有效。我正在以一种同步的方式做事,但只是为了性能测试的目的(例如,检查我是否有一个空索引可以使用,摄取一些数据,查询数据)。看这样的片段:

    var elasticClient = new elasticsearch.Client({
        host: ((options.host || 'localhost') + ':' + (options.port || '9200'))
    });
    // Note, I already have promise handling implemented, omitting it for brevity though
    var promise = elasticClient.indices.delete({index: "_all"});
    /// ...

是否有某种机制可以发送客户端配置以快速失败,或者我可以在客户端上执行一些测试以确保它在调用 delete 之前打开?

更新:2015-05-22
我不确定这是否正确,但也许尝试获取客户统计信息是合理的?

    var getStats = elasticClient.nodes.stats();
    getStats.then(function(o){
        console.log(o);
    })
    .catch(function(e){
        console.log(e);
        throw e;
    });

通过 Node 调试,当 ElasticSearch 关闭/无法访问时,我看到 promise 被拒绝:“错误:无事件连接”。当它确实连接时,我当时的处理程序中的 o 似乎有关于连接状态的详细信息。这种方法是否正确,或者是否有检查连接可行性的首选方法?

最佳答案

获取统计数据可能是一项繁重的任务,只是为了确保您的客户端已连接。您应该使用 ping,参见第二个示例 https://github.com/elastic/elasticsearch-js#examples

在启动时实例化 elasticsearch-js 客户端连接后,我们也在使用 ping。

// example from above link
var elasticsearch = require('elasticsearch');
var client = new elasticsearch.Client({
  host: 'localhost:9200',
  log: 'trace'
});

client.ping({
  // ping usually has a 3000ms timeout
  requestTimeout: Infinity,
  // undocumented params are appended to the query string
  hello: "elasticsearch!"
}, function (error) {
  if (error) {
    console.trace('elasticsearch cluster is down!');
  } else {
    console.log('All is well');
  }
});

关于node.js - 如何检查 ElasticSearch 客户端是否已连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30403891/

相关文章:

elasticsearch - 新群集中的重新索引数据应以最新时间戳更新

amazon-web-services - 删除 Amazon Elasticsearch 中某个类型的所有文档

ruby-on-rails - 如何在Rails 3应用程序中使用Dob日期时间字段搜索age_from至age_to?

node.js - 在expect().toBe()上应用toBeA()方法时,它会给出一个错误,无法读取未定义的属性

javascript - MongoDB 获取数据以 HTML 形式显示

ios - 错误 : Unexpected end of multipart data] storageErrors: [] in express. js-iOS (Objective-C) 应用程序

node.js - 在 JADE 中访问 jQuery 对象

eclipse - 如何配置nodeclipse自动完成?

elasticsearch - 如何在elasticsearch中的同义词过滤器中排除搜索词

search - 亚马逊云搜索体验