如何在SolrCloud中提出请求?

时间:2018-06-05 15:42:26

标签: solr apache-zookeeper solrcloud

我有一个Node.js应用程序,我曾经有一个独立的Solr,但我们公司决定使用SolrCloud提供故障转移。

在独立的Solr中我只有一台服务器,我有我的所有请求,例如:http://solr_server:8983/solr/mycore/select?indent=on&q=*:*&wt=json所以所有请求一直导致同一台服务器。

但是现在我有3个不同的实例,每个实例有1个ZooKeeper和1个Solr节点,我的请求如下所示:http://solr_server_1:8983/solr/mycollection/select?q=*:*
现在的问题是:如果solr_server_1会崩溃怎么办?我怎样才能得到我的结果?在这种情况下如何处理请求?

1 个答案:

答案 0 :(得分:1)

如果您手动执行此操作:您必须在连接失败时捕获异常,然后重试列表中的下一个服务器。

let servers = ['ip1:8983', 'ip2:8983', 'ip3:8983']

如果您正在使用支持Zookeeper的库(即它连接到zookeeper以找出实时节点是什么),您可以为客户端提供一个zookeeper节点列表,并让它找出其余部分。 node-solr-smart-client也是一个支持Zookeeper的客户端。

options = {
    zkConnectionString: 'ip1:2181,ip2:2181,ip3:2181',
    // etc.
}

solrSmartClient.createClient('my_solr_collection', options, function (err, solrClient) {