如何在 SolrCloud 中发起请求?
How to make a request in 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
下降怎么办?我怎样才能得到我的结果?在这种情况下我该如何处理请求?
如果您手动执行此操作:您必须在连接失败时捕获异常,然后重试列表中的下一个服务器。
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) {
我有一个 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
下降怎么办?我怎样才能得到我的结果?在这种情况下我该如何处理请求?
如果您手动执行此操作:您必须在连接失败时捕获异常,然后重试列表中的下一个服务器。
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) {