0

我用 SolrCloud 建立了一个两台服务器的 Solr 集群。目前我有Master和Replica。

我想将数据导入到领导者,因为在从属上进行增量导入没有任何意义(更新不会分发给领导者)。

从文档中我得到 CloudSolrServer 知道集群状态(从 Zookeeper 获得)并且默认情况下只将所有更新发送给领导者。

我想要的是让 CloudSolrServer 将所有数据导入命令发送到主服务器。我有以下代码:

        SolrServer solrServer = new CloudSolrServer("localhost:2181");
        ModifiableSolrParams params = new ModifiableSolrParams();
        params.set("qt", "/dataimport");
        params.set("command", "delta-import");
        QueryResponse response = solrServer.query(params);

但我看到请求仍然发送到我的服务器 localhost:8080 和 localhost:8983。有没有什么办法解决这一问题?

4

2 回答 2

0

只需将您的 solr 服务器初始化替换为以下

SolrServer solrServer = new CloudSolrServer("zkHost1:port,zkHost2:port");

这将导致 solr 服务器客户端向 zookeeper 咨询 solrcloud 状态。有关更多详细信息,请阅读 CloudSolrServer 文档以从 zookeeper ensemble 进行初始化。

于 2013-10-28T09:43:26.767 回答
-2

try { CloudSolrServer css = new CloudSolrServer("host1:2181,host2:2181"); css.connect(); ZkStateReader zkSR2 = css.getZkStateReader(); String leader = zkSR2.getLeaderUrl("collection_name", "shard1", 10); } catch (KeeperException e) { } catch (IOException
e) { } catch (InterruptedException e) {}

于 2014-11-18T10:31:53.350 回答