node.js elasticsearch多个主机

时间:2014-09-10 11:07:34

标签: node.js elasticsearch

在我的节点应用程序中,我使用“Elasticsearch”进行数据检索。当我连接到只有一个主机时,它工作正常。

代表:

try {
        elasticSearchClient = new ElasticSearchClient({
        host: 'xxx.xxx.x.xxxx',
        port: '9200'
    });
} catch (err) {
    console.log('err=' + err);
}

但是当我试图连接到多个主机(实例)时,我收到错误:

例如:

var serverOptions = {
    hosts:[

        {
            host: 'xxx.xxx.x.xxx',
            port: 9200
        },{
            host: 'xxx.xxx.x.xxx',
            port: 9200
        }]
};

elasticSearchClient = new ElasticSearchClient(serverOptions);

错误:

ECONN REFUSED: socket hang up

我正在使用“elsaticsearchclient”节点包。请帮我解决此问题。提前致谢..

编辑:

实际上有1个主机正在运行而另一个主机已关闭。因此,当主机中的一个出现故障时,我必须重定向到另一个主机。我怎样才能实现这个目标?

1 个答案:

答案 0 :(得分:0)

hosts应该是一个完整网址数组。请执行以下操作:

elasticSearchClient = elasticsearch.Client({
    hosts: serverOptions.hosts.map(function (server) {
        return 'http://' + serverOptions.user + ':' + serverOptions.password + '@' + server.host + ':' + server.port;
    })
}),