solrj をクライアントとして使用して、ドキュメントを solr クラウドにインデックス付けしています (solr4.5 を使用)
tenant_id に基づいてドキュメントを保存する必要があったため、ドキュメント ルーティングを実行しようとしています。コレクションがnumShardsパラメーターを使用して作成されている場合にのみ可能です( http://searchhub.org/2013/06/13/solr-cloud-document-routing/ )
solr クラウド (example1/solr と example2/solr) に solr の 2 つのインスタンスと、2181 ポートで実行されている exrenal Zookeeper があります。
両方のインスタンスは、collection1 というコレクションで構成されています
newCollectionというコレクションをもう 1 つ作成しました(2 つのシャードと 2 つのレプリカを使用)。
http://localhost:8501/solr/admin/collectionsaction=CREATE&name=newCollection&numShards=2&replicationFactor=2&maxShardsPerNode=2&router.field=id
example1/solr-> には、newCollection_shard1_replica1 と newCollection_shard2_replica1 があります。
example2/solr -> newCollection_shard1_replica2 と newCollection_shard2_replica2 があります
example1/solr/collection1/conf をすべてのシャードとレプリカにコピーしました
Zookeeper サーバーと solr インスタンスを再起動しました。
Zookeeper->zkServer.cmd
example1/solr-> java -Dbootstrap_confdir=./solr/newCollection_shard1_replica1/conf -Dcollection.configName=myconf -DzkHost=localhost:2181 -jar start.jar
example2/solr->java -DzkHost=localhost:2181 -jar start.jar
(両方のインスタンスが異なるポートで実行されています。1 つは 8081 で、もう 1 つは 8051 です)
solrj クライアントを使用してドキュメントのインデックスを作成しています
ここに私のサンプルコードがあります
String url="http://localhost:8081/solr"
ConcurrentUpdateSolrServer solrServer= new ConcurrentUpdateSolrServer(url, 10000, 4);
SolrInputDocument doc = new SolrInputDocument();
doc.addField("id", "shard1!513");
doc.addField("name", "Santhosh");
solrServer.add(documents);
solrServer.commit();
しかし、ID shard1!513 でcollection1にドキュメントを保存しています。solrconfig.xml で必要な構成変更はありますか (solr4.5 に付属するデフォルトの solrconfig.xml を使用しています)。
ドキュメントをnewCollectionに保存するにはどうすればよいですか? ドキュメント ルーティングの方法
問題を解決してください。
ありがとう!