2012-06-28 19 views
6

Los archivos de configuración para SolR DataImportHandler contienen las consultas SQL para ejecutar en la base de datos, cómo asignar las columnas resultantes a campos de documentos SolR y, por supuesto, los parámetros necesario para conectarse a la base de datos.Solr DataImport: gestión de configuración para diferentes entornos (desarrollo/montaje/producción)

En nuestro proyecto, los parámetros de conexión de la base de datos (específicamente las contraseñas de la base de datos) cambian de entorno a entorno, lo que nos obliga a mantener una copia ligeramente diferente del archivo XML de configuración completo para cada entorno.

¿Hay alguna manera de configurar los parámetros de conexión de la base de datos (especialmente las contraseñas) de forma independiente a las declaraciones y declaraciones SQL, para que cada configuración se mantenga Una vez y solo una vez?

Respuesta

2

esto es un problema conocido en Solr.

Si mira Solr doc, o en el libro Solr Entreprise Server, dicen que puede usar un core1.properties con clave = valor y usar la clave en sus archivos de configuración xml ... pero en mi experiencia lo hace no trabajo. Lo he intentado de varias maneras, hay preguntas abiertas en la lista de correo solr al respecto.

Así que tienes que recurrir a soluciones temporales feas (como usar un archivo xml de plantilla y reemplazar # contraseña # con la contraseña real, etc.).

+0

que sé con seguridad se puede pasar parámetros a través de la URL de importación de datos, pero eso apesta también para las contraseñas, supongo ... – javanna

+0

Gracias javanna. Apesta, pero funcionará para nosotros en este caso. – jsalvata

4

En realidad esto puede se puede hacer utilizando la configuración de soldar estándar.

En primer lugar, es necesario definir sus fuentes de datos en solrconfig.xml [Ver Adding Datasource in Solrconfig]

En segundo lugar, se puede externalizar las configuraciones DIH en un archivo separado utilizando XInclude

que utilizan este enfoque, tanto para utilizar locales archivos de configuración y para centralizar las conexiones en diferentes núcleos.


Ejemplo: En solrconfig.xml, añadir:

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

local.dih.xml se verá algo como:

<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

¡Gracias! Eso es lo que he estado buscando. – Oyeme

Cuestiones relacionadas