我正在使用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;
});
通过节点调试,我看到当elasticsearch关闭/无法访问时,承诺被拒绝: "Error: No Living connections"
. 当它连接时, o
在我的示例中,then处理程序似乎有关于连接状态的详细信息。这种方法是正确的还是有更好的方法来检查连接的可行性?
1条答案
按热度按时间xkftehaa1#
获取统计数据可能是一个繁重的任务,只需确保您的客户机已连接。您应该使用ping,参见第二个示例https://github.com/elastic/elasticsearch-js#examples
在启动时示例化elasticsearch js客户端连接之后,我们也在使用ping。