Richard
Richard

Reputation: 4415

Share config files across environments in Solr

We have several environments (incl. several development, staging and production), but currently copy and paste the Solr conf folders and setup solr-data-config.xml for each environment as the file has the environments details:

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

How can we separate the solr config from the environment data, so that we just have one config folder per search group and have separate environment data?

Upvotes: 1

Views: 359

Answers (1)

Alessandro Benedetti
Alessandro Benedetti

Reputation: 1114

I would recommend to externalise the environment dependent parameters :

1) DIH

You can obtain this using placeholders : 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" } is the syntax to use[1] .

Then you need to pass the variables as Java system properties for the Solr java process.

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

Upvotes: 2

Related Questions