我们正在尝试实现二维solr云集群,其中第一维是集合,第二维是分片。应根据文档属性在 runtime 中确定集合。
我可以看到solrj支持此功能 - CloudSolrClient
有适当的方法接受集合名称,如add(String collection, SolrInputDocument doc)
,所以我注册了@Bean CloudSolrClient("zookeeper.host")
。但显然这还不够,因为Spring Data Solr使用的SolrTemplate
中的方法不接受集合名称。
由于SolrTemplate
使用SolrClient
,我尝试解决此问题,扩展SolrTemplate并覆盖saveBean
和saveBeans
方法委托给CloudSolrClient#add(String collection, SolrInputDocument doc)
和{{ 1}}。它工作正常,直到我需要为查询做同样的事情。 CloudSolrClient#add(String collection, Collection<SolrInputDocument> docs)
是package-private和final,所以我无法覆盖它。在这里我卡住了!
总结我的问题:有没有办法在运行时中的spring data solr中指定集合名称?
我非常感谢任何帮助!
此致 Eugeny
答案 0 :(得分:0)
我的问题有点不同,但我在查询中也遇到了集合名称的问题,在我的情况下,将@SolrDocument(solrCoreName =&#34; core_to_which_model_class_belong&#34;)添加到模型类解决了问题。