Solr DataImportHandler(DIH)配置使用

Solr DataImportHandler

大多数应用程序将数据存储在关系数据库或XML文件中,搜索这些数据是常见的操作。DataImportHandler提供了一个配置驱动的方式,将这些数据导入到Solr中。在初始化构建的时候全量抽取(full-import)数据,还可以使用增量抽取(delta-import)的方式叠加新的数据。

添加jar架包

jar架包括 solr-dataimporthandler-extras-7.2.1.jar、solr-dataimporthandler-7.2.1.jar、连接关系型数据库的JDBC驱动包,把他们添加到solr项目的WEB-INF/lib/目录下。solr-dataimporthandler两个jar包位于SOLR_ROOT/dist/ 目录下。我这里操作的环境数据库是Oracle,所以添加的是Oracle的驱动包,下面配置的数据库连接也是Oracle。

配置requestHandler

在 solrhome/${collection}/conf/solrconfig.xml 文件,添加 dataimport requestHandler。

<config>
    <requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
        <lst name="defaults">
          <str name="config">/usr/local/solr/solrhome/test/conf/data-config.xml</str>
          <lst name="datasource">
         <str name="name">dsj</str>
             <str name="driver">oracle.jdbc.driver.OracleDriver</str>
             <str name="url">jdbc:oracle:thin:@ip:1521:orcl</str>
             <str name="user">user</str>
             <str name="password">password</str>
          </lst>
        </lst>
    </requestHandler>
</config>

说明:数据源可以配置在solrconfig.xml ,也可以配置在data-config.xml

配置data-config.xml

solr 是以文档为基本单位来存储和展示,data-config.xml定义着文档的元素。文档作为同类的代表,包含1个或多个根实体(root entity),实体又可包含多个子实体。实体是关系型数据库中的表或视图的映射,包含多个字段(filed)。字段的属性定义来源于solr schema。

在 solrhome/${collection}/conf/目录下,创建data-config.xml,并添加以下内容。

<?xml version="1.0" encoding="UTF-8" ?>
<dataConfig>
    <document>
        <entity name="t_xdr_spsc_zsxx" pk="ID" dataSource="dsj"
                query="select * from t_xdr_spsc_zsxx"
                deltaImportQuery="select * from t_xdr_spsc_zsxx where ID='${dih.delta.ID}'"
                deltaQuery="select ID from t_xdr_spsc_zsxx where update_time &gt; to_date('${dih.t_xdr_spsc_zsxx.last_index_time}','yyyy-mm-dd hh24:mi:ss')" 
                deletedPkQuery="select ID from t_xdr_spsc_zsxx where delete_flag='1' and update_time &gt; to_date('${dih.t_xdr_spsc_zsxx.last_index_time}','yyyy-mm-dd hh24:mi:ss')">
        </entity>
    </document>
</dataConfig>

entity配置说明

  • name : 标识实体的唯一名称
  • pk:实体的主键。非必选,用于增量导入(delta-import)。
  • dataSource:配置在solrconfig.xml的dataSource名称,多数据源的时候会这么使用。示例中使用这种配置方式。
  • query:必填,用全量导入(full-import)查询数据库的SQL。
  • deltaQuery:用于增量导入,查询增量的主键传给deltaImportQuery使用${dih.delta.column-name}
  • deltaImportQuery:增量导入查询用
  • deletedPkQuery:增量删除用,根据主键来删除文档。

namespace 命名空间:提供 ${dih.delta.column-name}、${dih.entity.last_index_time}(单个实体范围)、${dih.last_index_time}(全局),在增量导入的可以使用它们来更新索引。
solrhome/${collection}/conf/dataimport.properties存储着${dih.last_index_time}、${dih.entity.last_index_time}的信息

参考:Solr Wiki DataImportHandler

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值