2012-02-06 36 views
11

単一のマシンまたは複数の異なるマシン上の異なるポート上で動作するSolr/Tomcatの複数のインスタンスを作成する必要がある場合があります。これを行うにあたって、環境変数(例えば、<dataDir>${envvar}/path/to/index</dataDir>)を使用してdataDir変数(solrconfig.xml内で)を指定できるかどうか疑問に思っていました。dataDir変数にsolrconfig.xml内の環境変数を使用することはできますか?

+1

ないあなたは、環境変数を使用できるかどうかを確認しますが、[ここ](http://wiki.apache.org/solr/SolrConfigXml#System_property_substitution)で説明したように、システムのプロパティを使用することができます。 – nikhil500

答えて

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でも使用できますか? –

2

go multi-core

特定のインデックスディレクトリをコアとして展開するようにSolrに指示できます。例えば、http://localhost:8983/solr/coreXpath_to_instance_directoryに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 

次の2つの実行中のコアを交換し、負荷を作成するためのSolrを伝えることができ、非アクティブコアで実行されているコアを入れ替えるなど

4

はい、これを行うことはできますが、yあなたがそれを始めるときにこれを設定するためにいくつかのフープをジャンプする必要があります。using system properties passed to the JVM

どこでも、あなたの環境変数は次のように変数を入れて、あなたの設定ファイルで仕事をしたい:

${VAR} 

その後、あなたはあなたのJVMを起動するとき、実行してそれに変数を渡す:

java -DVAR=$your-system-variable 

だから、このコンクリートを作るために、ここで我々は何をすべきかです:

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

そして、我々の設定があるの次のようになります。

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

魅力的です。wiki.apache.orgに説明

0

として、あなたは以下のようにsolrconfig.xmlでシステムプロパティの置換を使用することができます。

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

は、その後、あなたがプロパティの値を指定することができますファイル:

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

別の方法がありますこの方法でSolrランタイム中にデータディレクトリを指示する:

私はより良い方法は、例えば、あなたの solr.homesolr.xmlを定義することだと思います

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

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

と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> 

注:Iドンここで外部変数を使用できると思います。


最後例えばconf/Catalina/localhostでJVMシステムプロパティファイルを(例えばsolr.xml)、使用して:

solr/homeが働くだろう
<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/data/dirwon't workあなたのSolrにパッチを適用せず。

参照:tomcat_solr.xml.erb

関連する問題