如何在Spring Data Solr 2.0.1中动态指定Solr Cloud集合?

时间:2016-04-26 09:05:03

标签: solr solrj solrcloud spring-data-solr

我们正在尝试实现二维solr云集群,其中第一维是集合,第二维是分片。应根据文档属性在 runtime 中确定集合。

我可以看到solrj支持此功能 - CloudSolrClient有适当的方法接受集合名称,如add(String collection, SolrInputDocument doc),所以我注册了@Bean CloudSolrClient("zookeeper.host")。但显然这还不够,因为Spring Data Solr使用的SolrTemplate中的方法不接受集合名称。

由于SolrTemplate使用SolrClient,我尝试解决此问题,扩展SolrTemplate并覆盖saveBeansaveBeans方法委托给CloudSolrClient#add(String collection, SolrInputDocument doc)和{{ 1}}。它工作正常,直到我需要为查询做同样的事情。 CloudSolrClient#add(String collection, Collection<SolrInputDocument> docs)是package-private和final,所以我无法覆盖它。在这里我卡住了!

总结我的问题:有没有办法在运行时中的spring data solr中指定集合名称?

我非常感谢任何帮助!

此致 Eugeny

1 个答案:

答案 0 :(得分:0)

我的问题有点不同,但我在查询中也遇到了集合名称的问题,在我的情况下,将@SolrDocument(solrCoreName =&#34; core_to_which_model_class_belong&#34;)添加到模型类解决了问题。