使CloudSolrServer仅在领导者上运行dataimports

uut 发布于 2019-03-09 dataimporthandler 最后更新 2019-03-09 14:34 3 浏览

我使用SolrCloud建立了两台服务器Solr集群。目前我有Master和Replica。 我想将数据导入到领导者,因为在从属上进行增量导入没有任何意义(更新不会分配给领导者)。 从我得到的文档中,CloudSolrServer知道群集状态(从Zookeeper获取),默认情况下只将所有更新发送给领导者。 我想要的是让CloudSolrServer将所有的dataimport命令发送给master。我有以下代码:

        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。有没有什么办法解决这一问题?
已邀请:

hea

赞同来自:

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) {}

cet

赞同来自:

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

SolrServer solrServer = new CloudSolrServer("zkHost1:port,zkHost2:port");
这将导致solr服务器客户端向zookeeper咨询solrcloud状态。 有关更多详细信息,请从zookeeper集合中将CloudSolrServer文档读取到init。