jsa*_*ata 6 solr dataimporthandler
SolR DataImportHandler的配置文件包含针对数据库运行的SQL查询,如何将结果列映射到SolR文档字段,当然还包括连接到数据库所需的参数.
在我们的项目中,数据库连接参数(特别是数据库密码)从环境变为环境,这迫使我们为每个环境维护整个配置XML文件的略微不同的副本.
有没有办法将数据库连接参数(特别是密码)与SQL语句和声明分开配置,因此每个配置都保持一次且仅一次?
实际上这可以使用标准的 solr 配置来完成。
首先,您需要在 solrconfig.xml 中定义您的数据源 [参见在 Solrconfig 中添加数据源]
其次,您可以使用XInclude将 DIH 配置外部化到一个单独的文件中
我使用这种方法来使用本地配置文件并集中不同内核之间的连接。
示例:在 solrconfig.xml 中,添加:
<xi:include href="../../common-config/local.dih.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
Run Code Online (Sandbox Code Playgroud)
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>
Run Code Online (Sandbox Code Playgroud)
这是 Solr 中的一个已知问题。
如果您查看 Solr 文档或 Solr Entreprise Server 书籍,他们说您可以使用带有 key=value 的 core1.properties 并在 xml 配置文件中使用 key...但根据我的经验,它不起作用。我已经尝试了几种方法,solr 邮件列表上有关于此的开放问题。
因此,您必须采取丑陋的解决方法(例如使用模板 xml 文件并用真实密码替换 #password# 等)。