我使用 solrj 作为客户端将文档索引到 solr 云中(使用 solr4.5)
我需要根据tenant_id 保存文档,所以我正在尝试进行文档路由。仅当使用numShards参数(http://searchhub.org/2013/06/13/solr-cloud-document-routing/)创建集合时才有可能
我在 solr 云中有两个 solr 实例(example1/solr 和 example2/solr)和在 2181 端口运行的 exrenal zookeeper。
这两个实例都包含名为collection1的集合
我又创建了一个名为newCollection的集合(有两个分片和两个副本),使用
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
(两个实例运行在不同的端口,一个在 8081,另一个在 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中?以及如何进行文档路由?
请帮我解决问题。
谢谢!