0

SolrCloud を使用して 2 つのサーバーの Solr クラスターをセットアップしました。現在、マスターとレプリカがあります。

スレーブでデルタインポートを行うのは意味がないため、データインポートをリーダーに渡したいです(更新はリーダーに配布されません)。

ドキュメントから、CloudSolrServer はクラスターの状態 (Zookeeper から取得) を認識しており、デフォルトではすべての更新をリーダーにのみ送信することがわかりました。

私が望むのは、CloudSolrServer がすべての dataimport コマンドをマスターに送信するようにすることです。次のコードがあります。

        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 サーバー クライアントは、solrcloud の状態について Zookeeper に問い合わせます。詳細については、CloudSolrServer のドキュメントを参照して、Zookeeper アンサンブルから初期化してください。

于 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 に答える