2012-06-28 2 views
6

Файлы конфигурации для SolR DataImportHandler содержат SQL-запросы для работы с базой данных, как сопоставить полученные столбцы с полями документа SolR и, конечно же, параметры необходимо подключиться к базе данных.Solr DataImport: управление конфигурацией для разных сред (разработка/этап/производство)

В нашем проекте параметры подключения базы данных (в частности, пароли базы данных) изменяются от среды к среде, что заставляет нас поддерживать одну немного другую копию всего файла конфигурации конфигурации для каждой среды.

Есть ли способ настроить параметры подключения базы данных (особенно пароли) отдельно от операторов SQL и деклараций, поэтому каждая конфигурация поддерживается один раз и только один раз?

ответ

2

Это известная проблема в Solr.

Если вы посмотрите на документ Solr или на книгу сервера Solr Entreprise, они говорят, что вы можете использовать core1.properties с ключом = значение и использовать ключ в ваших конфигурационных файлах xml ... но по моему опыту он делает не работа. Я попробовал несколько способов, есть открытые вопросы в списке рассылки solr.

Итак, вам нужно прибегнуть к уродливым обходным решениям (например, используя файл шаблона xml и заменяя # password # на реальный пароль и т. Д.).

+0

Я знаю, что вы можете передать параметры через dataimport url, но это тоже засасывает пароли, я думаю ... – 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

Смежные вопросы