2012-02-06 85 views
11

我們有一種情況,我們必須創建在單臺機器或多臺不同機器上的不同端口上運行的Solr/Tomcat的多個實例。爲此,我想知道是否可以使用環境變量指定dataDir變量(在solrconfig.xml中),例如:<dataDir>${envvar}/path/to/index</dataDir>是否可以在solrconfig.xml中使用dataDir變量的環境變量?

+1

不知道,如果你可以使用環境變量,但可以作爲系統屬性解釋[這裏](http://wiki.apache.org/solr/SolrConfigXml#System_property_substitution)。 – nikhil500 2012-02-06 17:48:01

回答

7

由於我在做類似的設置,我也需要這個。我不認爲這是使用ENV變量的好習慣。您最好使用多核設置或在solr.xml中使用屬性文件。

例如。

<core name="core_1" instanceDir="core_1" properties="core1.properties" /> 

,然後在core1.properties:

config.datadir=/datadir1 

,然後用它在你的solrconfig.xml中:

<dataDir>${config.datadir}</dataDir> 

乾杯,

帕特里克

+0

它也可以在data-config.xml中使用嗎? – 2016-03-07 08:27:02

2

multi-core

你可以告訴Solr部署一個特定的索引目錄作爲核心。例如,部署在path_to_instance_directoryhttp://localhost:8983/solr/coreX一個Solr的指數,你會怎麼做:

http://localhost:8983/solr/admin/cores?action=CREATE&name=coreX&instanceDir=path_to_instance_directory&config=config_file_name.xml&schema=schem_file_name.xml&dataDir=data 

你可以告訴Solr的創建,加載,交換兩個運行核心,換一個正在運行的核心與非活動核心等

4

是的,你可以做到這一點,但是你需要跳過一對夫婦的箍來設置這個using system properties passed to the JVM當你啓動它。

任何你希望你的環境變量,在您的配置文件的工作,把這樣的變量:

${VAR} 

然後,當您啓動JVM,它傳遞變量做:

java -DVAR=$your-system-variable 

因此,爲了使這個具體的,在這裏我們做什麼:

java -DINSTALL_ROOT=$INSTALL_ROOT -jar -server start.jar 

而我們的配置爲S例如:

<filter class="solr.SynonymFilterFactory" synonyms=${INSTALL_ROOT}/Solr/conf/synonyms.txt /> 

工程就像一個魅力。

0

由於上wiki.apache.org解釋的,可以使用系統屬性替換在solrconfig.xml象下面這樣:

<dataDir>${data.dir}</dataDir> 

然後你就可以在屬性指定值文件:

#solrcore.properties 
data.dir=/data/solrindex 

另一種方式是以這種方式在Solr運行時期間指定數據目錄:

java -Dsolr.data.dir=/data/dir -jar start.jar 

,並在XML文件中使用的語法如下:

<dataDir>${solr.data.dir:./solr/data}</dataDir> 

我認爲,更好的方法是你solr.home中定義solr.xml,如:

<solr persistent="true" sharedLib="lib"> 
<cores adminPath="/admin/cores"> 
    <core name="core0" instanceDir="core0" dataDir="/var/lib/solr/core0" /> 
    <core name="core1" instanceDir="core1" dataDir="/var/lib/solr/core1" /> 
</cores> 
</solr> 

注:我不不認爲你可以在這裏使用任何外部變量。


最後使用JVM系統屬性文件(例如solr.xml)在conf/Catalina/localhost,例如:

<Context docBase="webapps/solr.war" crossContext="true"> 
    <Environment name="solr/home" type="java.lang.String" value="/opt/solr/ads_solr" override="true" /> 
    <Environment name="solr/data/dir" type="java.lang.String" value="/var/lib/solr" override="true" /> 
</Context> 

其中solr/home會的工作,但solr/data/dirwon't work沒有修補你的Solr。

參見:tomcat_solr.xml.erb