2014-01-16 41 views
5

我有許多使用Solr 4.6.0索引的網站,我希望爲每個核心維護不同的核心。每個核心將共享相同的schema.xml和相同的solrconfig.xml。理想情況下,我可以通過管理控制檯創建新的核心,Solr將選擇我的默認核心配置。跨多個Solr 4.6核心的共享模式和配置

當前,當我創建一個新的核心時,我在文件系統中創建一個新的目錄,因爲我希望核心爲。我然後添加到:

  1. 一個core.properties文件(只包含一個單一的名稱= myycorename財產
  2. 一個conf文件夾,以與一般schema.xml中的複製和solrconfig.xml中的文件

我試圖把在core.properties以下文件的級別並相對引用:

schema=../configs/template/schema.xml 
config=../configs/solrconfig.xml 

我自己也嘗試符號鏈接(並不理想,因爲我會LIK這可以在windows/osx/linux上運行。

但Solr似乎不喜歡目錄之外的相對引用。在Core Discovery 4.4 and Beyond

中提到的configName屬性是否可以在Solr中使用這種默認配置?

回答

5

As of Solr 4.8,芯可以使用config sets共享公共配置(即 「solrconfig.xml中」, 「schema.xml中」 等)的多個核心之間。

你想你的目錄結構變更爲:

./ 
├─ solr.xml 
├─ configsets/ 
| └─ template/ 
|  └─ conf/ 
|  ├─ schema.xml 
|  ├─ solrconfig.xml 
|  └─ ... 
├─ core1/ 
| ├─ core.properties 
| └─ data/ 
└─ core2/ 
    ├─ core.properties 
    └─ data/ 

這定義了一個配置組命名模板。在覈心的「conf /」目錄下的所有東西都應該在配置集的「conf /」目錄下。

然後,在每個 「core.properties」 的文件,設置configSet和省略模式配置

# core.properties 
name=... 
configSet=template 

現在使用模板配置設置你的內核將共享「schema.xml」,「solrconfig.xml」等。

不幸的是,管理界面並不直接支持分配configSet財產。但是,如果您使用CoreAdmin API,則可以使用CREATE命令設置configSet。例如,

http://localhost:8983/solr/admin/cores?action=CREATE&name=coreX&configSet=template 
+0

我一直在用solrcloud配置嘗試這些,但它似乎沒有拿起「configSet」。我在ZK的核心在一個「configs」文件夾下,我把「模板」放在/ configsets下,但沒有運氣。我收到錯誤「錯誤CREATEing SolrCore'test1':無法創建core [test1]導致:無法找到配置文件集合test1 found:[docs,users,.system]」。 也許我需要把「configsets」文件夾放在別的地方? – s1m3n

+0

@ s1m3n我不確定不知道更多關於您的設置。你應該提出一個新的問題,詢問這個問題。 – cpburnz

+0

我做了並回答了自己在http://stackoverflow.com/questions/36715193/solr-adding-cores-using-a-configset-in-a-solrcloud-setup-does-not-work – s1m3n

0

默認情況下,當您創建新內核時,它將共享現有Solr實例的配置文件。但是您可以爲新創建的核心提及不同的配置文件。請參閱http://wiki.apache.org/solr/CoreAdmin

config=different_solrconfig.xml&schema=different_schema.xml 
+1

我猜「現有的Solr實例」是指默認的核心(例如collection1)。我認爲這會創建配置文件的副本,而不是共享配置。如果我在同一配置上有10個內核,則可以使用相同的模板創建它們。但是如果配置發生變化,我需要進行10次更新。 – diffa

+0

有兩個不同的東西。一個是Solr實例,另一個是Solr核心。在單個solr實例中,您可以創建多個核心。默認情況下,所有內核將共享默認內核的默認配置(例如collection1)。我有一個運行單核的Solr實例。後來,當我創建其他內核時,我沒有找到任何配置副本。但新核心能夠像老一樣執行相同的操作。這意味着核心共享該實例的配置。如果您有10個Solr實例,那麼只有您必須對10個實例進行更改。 – buddy86