2012-06-28 26 views
6

SolR DataImportHandlerのコンフィグレーションファイルには、データベースに対して実行するSQLクエリ、結果の列をSolRドキュメントフィールドにマッピングする方法、データベースに接続するために必要です。Solr DataImport:さまざまな環境(開発/ステージング/プロダクション)のコンフィグレーションの管理

私たちのプロジェクトでは、データベース接続パラメータ(特にデータベースのパスワード)が環境によって変化するため、環境ごとに構成XMLファイルのコピーを少しずつ変更する必要がありました。

SQL文と宣言とは別にデータベース接続パラメータ(特にパスワード)を設定する方法があるため、各設定は一度だけ一度だけ維持されますか?

答えて

2

これはSolrの既知の問題です。

Solr docまたはSolr Entreprise Serverの本を見ると、key = valueを指定してcore1.propertiesを使用し、xml構成ファイルでキーを使用できますが、私の経験ではうまくいかない。私はいくつかの点でそれを試してきました。これについてsolrメーリングリストに未解決の質問があります。

テンプレートXMLファイルを使用して#password#を実際のパスワードなどに置き換えるなど、厄介な回避策に頼らざるを得ません。

+0

をあなたはを通してパラメータを渡すことができますdataimportのURL、それはあまりにも私が推測するパスワードのために吸う... – javanna

+0

ありがとうjavanna。それは吸うが、この場合は私たちのために働くだろう。 – jsalvata

4

実際にはこのを標準的なsolr構成で行うことができます。

まず、あなたはsolrconfig.xmlでデータソースを定義する必要がある[第二Adding Datasource in Solrconfig]

を参照してください、私は両方ともローカル使用するには、このアプローチを使用XInclude

を使用して別のファイルにDIH構成を外部化することができます構成ファイルを作成し、異なるコア間で接続を集中させることができます。


例: solrconfig.xmlで、追加:

<xi:include href="../../common-config/local.dih.xml" xmlns:xi="http://www.w3.org/2001/XInclude" /> 

local.dih.xmlのようなものになります。私は確かに知って

<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler"> 
    <lst name="defaults"> 
    <str name="config">data-config.xml</str> 
    <lst name="datasource"> 
     <str name="name">mongo</str> 
     <str name="type">MongoDataSource</str> 
     <str name="database">myMongoDb</str> 
    </lst> 
    <lst name="datasource"> 
     <str name="name">psql</str> 
     <str name="driver">org.postgresql.Driver</str> 
     <str name="type">JdbcDataSource</str> 
     <str name="url">jdbc:postgresql://localhost:5432/myPsqlDb</str> 
     <str name="user">dbUser</str> 
     <str name="password">dbPassword</str> 
    </lst> 
    </lst> 
</requestHandler> 
+0

ありがとう!それが私が探していたものです。 – Oyeme

関連する問題