在Solr中跨环境共享配置文件

时间:2017-10-04 10:18:46

标签: solr

我们有多个环境(包括多个开发,登台和制作),但目前为每个环境复制并粘贴Solr conf文件夹并设置solr-data-config.xml,因为该文件具有环境详细信息:< / p>

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

我们如何将solr配置与环境数据分开,以便每个搜索组只有一个配置文件夹,并且具有单独的环境数据?

1 个答案:

答案 0 :(得分:1)

我建议外部化与环境相关的参数:

1) DIH

您可以使用占位符获取此内容: e.g。

<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:“default”}是使用[1]的语法。

然后,您需要将变量作为Solr java进程的Java系统属性传递。

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