是否可以在solrconfig.xml中为dataDir变量使用环境变量?

Ram*_*dev 12 solr

我们有一种情况,我们必须创建在单个机器或几台不同机器上的不同端口上运行的多个Solr/Tomcat实例.向这样我在想,如果它使用environmentvariable例如像这样有可能指定的datadir变量(solrconfig.xml中内)<dataDir>${envvar}/path/to/index</dataDir>.

小智 8

由于我正在进行类似的设置,我也需要这个.我认为将ENV变量用于此是不错的做法.您可能最好使用多核设置或在solr.xml中使用属性文件.

例如.

<core name="core_1" instanceDir="core_1" properties="core1.properties" />
Run Code Online (Sandbox Code Playgroud)

然后在你的core1.properties中:

config.datadir=/datadir1
Run Code Online (Sandbox Code Playgroud)

然后在solrconfig.xml中使用它:

<dataDir>${config.datadir}</dataDir>
Run Code Online (Sandbox Code Playgroud)

干杯,

帕特里克


mli*_*ner 5

是的,您可以做到这一点,但是您需要跳过几个环节来使用启动时传递给 JVM 的系统属性进行设置。

任何您希望环境变量在配置文件中工作的地方,都可以像这样放置变量:

${VAR}
Run Code Online (Sandbox Code Playgroud)

然后,当您启动 JVM 时,通过执行以下操作将变量传递给它:

java -DVAR=$your-system-variable
Run Code Online (Sandbox Code Playgroud)

因此,为了具体说明,我们这样做:

java -DINSTALL_ROOT=$INSTALL_ROOT -jar -server start.jar
Run Code Online (Sandbox Code Playgroud)

我们的配置是这样的:

<filter class="solr.SynonymFilterFactory" synonyms=${INSTALL_ROOT}/Solr/conf/synonyms.txt />
Run Code Online (Sandbox Code Playgroud)

奇迹般有效。