我們正在嘗試實施一個二維solr雲集羣,其中第一個維度是一個集合,第二個維度是碎片。基於文檔屬性,收集應在運行時中確定。如何在Spring Data Solr 2.0.1中動態指定Solr Cloud集合?
我可以看到,這個功能是由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)
和CloudSolrClient#add(String collection, Collection<SolrInputDocument> docs)
此問題引擎蓋下。它工作得很好,直到我需要爲查詢做同樣的事情。 SolrTemplate#executeSolrQuery
是包私有和最終的,所以我不能覆蓋它。我在這裏卡住了!
總結我的問題:是否有一種方法可以在彈簧數據索引中指定集合名稱運行時?
我將不勝感激任何幫助!
問候, Eugeny
但不幸的是,它似乎並不動態。我需要能夠將文檔存儲在不同的集合中,而不是預定義的集合。 – Eugeny
我正在調試solrj和spring-data-solr代碼,看起來不同的solr客戶端有不同的方法。看看這段代碼,例如: 'if(collection == null)' 'collection =(reqParams!= null)? reqParams.get(「collection」,getDefaultCollection()):getDefaultCollection();' 這是來自CloudSolrClient。似乎您需要提供請求參數來指示客戶端根據所選集合執行呼叫。但是我看不到spring-data-solr中的任何方法來傳遞請求。它創建在solrj –
是的,謝謝!我也看過這個代碼。我結束了使用solrj實現查詢。 – Eugeny