0
私は1つのシャードと1つのリーダー& 1レプリカアーキテクチャを持っています。 "CloudSolrClient"を使用する場合、クエリはリーダーとレプリカの両方に配布されます。しかし、指導者を手動で見つけてクエリを作成する以外に、リーダー(飼い葉飼い機を使用して)だけを指す方法がありますか?solrjを直接使用してsolr "leader"に問い合わせる方法はありますか?
私は1つのシャードと1つのリーダー& 1レプリカアーキテクチャを持っています。 "CloudSolrClient"を使用する場合、クエリはリーダーとレプリカの両方に配布されます。しかし、指導者を手動で見つけてクエリを作成する以外に、リーダー(飼い葉飼い機を使用して)だけを指す方法がありますか?solrjを直接使用してsolr "leader"に問い合わせる方法はありますか?
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;
}
クラウドモードで展開する場合の必要性は何ですか。 ?単一のスタンドアロンソルバーサーバーを導入しないのはなぜですか? –
別のオプションは、あなたのリーダーを指し示すhttpsolrclientのインスタンスを作成するsolrjです。あなたの飼い葉桶を渡します。 –
@ShivaKumarSS "マージ"(古い文書と新しい文書の結合)中に問題が発生しています。したがって、索引作成中に、古い文書(マージ用)を見つけるときに照会がリーダーを直接指し示すようにします。 – Riya