2012-06-28 35 views
6

爲SOLR DataImportHandler配置文件包含SQL查詢來對數據庫,如何產生的列到Solr文檔字段映射運行,當然,參數需要連接到數據庫。Solr的DataImport:管理配置不同的環境(開發/分期/生產)

在我們的項目中,數據庫連接參數(特別是數據庫密碼)的變化,從環境到環境,這迫使我們保持一個略微不同的整機配置XML文件的副本,爲每個環境。

有沒有從SQL語句和聲明分別配置數據庫連接參數(特別是密碼)的方式,讓每個配置一次且僅一次維護?

回答

2

這是Solr中的一個已知問題。

如果你看看Solr文檔或者Solr企業服務器書,他們說你可以使用core1.properties和key = value並在你的xml配置文件中使用key ...但是根據我的經驗,不行。我已經嘗試了幾種方法,在solr郵件列表上有關於此的開放問題。

所以你不得不訴諸醜陋的解決方法(如使用模板xml文件,並與真正的密碼等替代#密碼#)。

+0

我確信你可以通過傳遞參數dataimport網址,但這太吸取密碼我猜... – javanna

+0

謝謝javanna。它很爛,但在這種情況下,它會適用於我們。 – jsalvata

4

其實這可以使用標準solr配置完成。

首先,你需要在solrconfig.xml中定義數據源[見Adding Datasource in Solrconfig]

其次,你可以外部化DIH配置成使用XInclude

我用這個辦法一個單獨的文件都使用本地配置文件並集中不同內核之間的連接。


例: 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