2017-10-04 151 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