2017-10-04 135 views
0

我們有幾個環境,但目前複製和粘貼的每個環境Solr的conf文件夾和設置solr-data-config.xml作爲文件具有環境信息(包括幾個開發,分期和生產。):共享配置文件中的Solr

<dataConfig> 
    <dataSource name="ds-db" type="JdbcDataSource" 
       driver="com.mysql.jdbc.Driver" 
       url="jdbc:mysql://10.0.0.40:3306/***" 
       user="***" 
       password="**"/> 

我們如何才能將solr config與環境數據分開,以便每個搜索組只有一個配置文件夾並具有單獨的環境數據?

回答

1

我會建議外化與環境相關的參數:

1)

您可以獲得此使用佔位符: 例如

<dataConfig> 
    <dataSource name="ds-db" type="JdbcDataSource" 
       driver="com.mysql.jdbc.Driver" 
       url ="${dataimporter.request.url}" 
       user ="${dataimporter.request.user}" 
       password ="${dataimporter.request.password}"/> 

2)Solrconfig

<requestHandler name="/dataimport" class="solr.DataImportHandler"> 
     <lst name="defaults"> 
      <str name="config">data-config.xml</str> 
      <str name="clean">true</str> 
      ... 
      <str name="url">${db.url:defaultUrl}</str> 
      <str name="user">${db.user:defaultUser}</str> 
      <str name="password">${db.password:}</str> 
      ... 
     </lst> 
    </requestHandler> 

$ {environment_variable: 「默認」}是要使用的語法[1]。

然後,您需要將變量作爲Java系統屬性傳遞給Solr java進程。

[1] https://lucene.apache.org/solr/guide/6_6/configuring-solrconfig-xml.html#Configuringsolrconfig.xml-JVMSystemProperties

+0

謝謝!這是有道理的,但不確定實施。 '2)'似乎並不適用於我,因爲我的文件中沒有任何設置,僅在'solr-data-config.xml'中。它會從哪裏拉,例如'$ {dataimporter.request.url}'?或者我會在哪裏添加這些? – Richard

+0

您需要在solrconfig.xml中添加這些行。 solr-data-config將從Solrconfig.xml中獲取將從JVM系統屬性中獲取變量的變量。 –

+0

好吧,我現在瞭解多餘的線路。同樣的問題仍然相當多,雖然:-)「_將從JVM系統屬性中獲取變量_」 - 我如何/在哪裏添加? – Richard