2016-12-07 11 views
0

私は1つのシャードと1つのリーダー& 1レプリカアーキテクチャを持っています。 "CloudSolrClient"を使用する場合、クエリはリーダーとレプリカの両方に配布されます。しかし、指導者を手動で見つけてクエリを作成する以外に、リーダー(飼い葉飼い機を使用して)だけを指す方法がありますか?solrjを直接使用してsolr "leader"に問い合わせる方法はありますか?

+0

クラウドモードで展開する場合の必要性は何ですか。 ?単一のスタンドアロンソルバーサーバーを導入しないのはなぜですか? –

+0

別のオプションは、あなたのリーダーを指し示すhttpsolrclientのインスタンスを作成するsolrjです。あなたの飼い葉桶を渡します。 –

+0

@ShivaKumarSS "マージ"(古い文書と新しい文書の結合)中に問題が発生しています。したがって、索引作成中に、古い文書(マージ用)を見つけるときに照会がリーダーを直接指し示すようにします。 – Riya

答えて

0

SolrJのShardsリーダーを入手することができます。たとえば、プログラムでバックアップを実行する必要がある場合など、便利な場合があります(Solr in Actionの例を参照)。 私が使用する関連コードは次のとおりです。

private final String COLLECTION_NAME = "myCollection"; 
private final String ZOOKEPER_CLIENT_TIMEOUT_MS = "1000000" 

private Map<String, String> getShardLeaders(CloudSolrServer cloudSolrServer) throws InterruptedException, KeeperException { 
     Map<String, String> shardleaders = new TreeMap<String, String>(); 
     ZkStateReader zkStateReader = cloudSolrServer.getZkStateReader(); 
     for (Slice slice : zkStateReader.getClusterState().getSlices(COLLECTION_NAME)) { 
      shardleaders.put(slice.getName(), zkStateReader.getLeaderUrl(COLLECTION_NAME, slice.getName(), ZOOKEPER_CLIENT_TIMEOUT_MS)); 
     } 
     return shardleaders; 
    } 
関連する問題