按时间增量导入_Solr结构化数据导入DIH

Solr结构化数据导入简介

Solr支持从关系数据库、基于http的数据源(如RSS和ATOM提要)、电子邮件存储库和结构化XML中索引内容。这里介绍从关系型数据库Mysql导入数据。

solr自动帮我们从数据库中导入数据进行索引,支持全量和增量两种方式。

怎么配置

1.需要在solrconfig.xml配置一个requestHandler,通过发出http请求来触发,这个requestHander称为Data import Handler (DIH)。

db-data-config.xml

dih-data-config.xml配置文件可在目录下:exampleexample-DIHsolrdbconfdb-data-config.xml拷贝。

配置文件可以是绝对路径、或相对集合conf/的相对路径。

2.DataImportHandler这个类所在jar并没有包含在类目录中,我们需要在solrconfig.xml中引入这个jar。

a7a69bb73cea303b18b2fc8b33d3b132.png

3.配置数据源

配置数据源,先看几个概念。

dataSource:数据源,定义从哪取数据。

entity:实体,表示取出的数据。

processor:处理器,执行数据加载。

transformer:转换器,执行数据处理。

field:定义实体中的列与模式字段的对应。

字段对应规则说明:

  1. 自动进行名字相同配对;
  2. 对于名字不同的通过显式配置 field的column、name属性指定

编辑之前的拷贝的配置文件:db-data-config.xml

配置数据源,单数据源:

多数据源:

配置自己账号和密码,url。

serverTimezone=GMT是为解决引入最新版mysql驱动jar报时区错误而加入的连接请求参数。

4.拷贝mysql的驱动jar包到solr中

fdc192cea25d93302ecdfc6ccdec3f50.png

5.导入测试数据

create table t_product(    prod_id    varchar(64) PRIMARY key,    name     varchar(200)    not null,    simple_intro LONGTEXT,    price bigint,    uptime datetime,    brand_id varchar(64),    last_modify_time datetime);create table t_brand(    id varchar(64) PRIMARY key,    name varchar(200) not null,    last_modify_time datetime);create table t_cat(    id varchar(64) PRIMARY key,    name varchar(200) not null,    last_modify_time datetime);create table t_prod_cat(    prod_id varchar(64),    cat_id    varchar(64) ,    last_modify_time datetime);INSERT INTO t_brand VALUES ('b01', '华为', '2018-5-17 00:00:00');INSERT INTO t_brand VALUES ('b02', '戴尔', '2018-5-18 00:00:00');INSERT INTO t_cat VALUES ('c01', '台式机', '2018-5-17 00:00:00');INSERT INTO t_cat VALUES ('c02', '服务器', '2018-5-17 00:00:00');INSERT INTO t_product VALUES ('tp001', '华为(HUAWEI)RH2288HV3服务器', '12盘(2*E5-2630V4 ,4*16GB ,SR430 1G,8*2TSATA,4*GE,2*460W电源,滑轨) ', 4699900, '2018-5-8 00:00:00', 'b01', '2018-5-8 00:00:00');INSERT INTO t_product VALUES ('tp002', '戴尔 DELL R730 2U机架式服务器', '戴尔 DELL R730 2U机架式服务器(E5-2620V4*2/16G*2/2T SAS*2热/H730-1G缓存/DVDRW/750W双电/导轨)三年', 2439900, '2018-5-18 15:32:13', 'b02', '2018-5-18 17:32:23');INSERT INTO t_prod_cat VALUES ('tp001', 'c01', '2018-5-8 14:48:56');INSERT INTO t_prod_cat VALUES ('tp001', 'c02', '2018-5-8 14:49:15');INSERT INTO t_prod_cat VALUES ('tp002', 'c01', '2018-5-18 15:32:48');INSERT INTO t_prod_cat VALUES ('tp002', 'c02', '2018-5-18 18:29:23');

t_product商品主表

t_brand:商品品牌表

t_cat:商品类别表

t_prod_cat:商品表和商品类别的关联表

6.配置db-data-config.xml的其他属性

以下是从example拷贝的官方自带的例子:

c93612d95c5d72b0ed2efbf4047af942.png

下可包含一个或多个 数据实体

entity 数据实体通用属性说明:

  • name (required) : 标识实体的唯一名
  • processor : 当数据源是非RDBMS 时,必须指定处理器。(默认是SqlEntityProcessor)
  • transformer : 要应用在该实体上的转换器。
  • dataSource : 当配置了多个数据源时,指定使用的数据源的名字。
  • pk : 实体的主键列名。只有在增量导入时才需要指定主键列名。和模式中的唯一键是两个不同的东西。
  • rootEntity : 默认document元素的子entity是rootEntity,如果把rootEntity属性设为false值,则它的子会被作为rootEntity(依次类推)。rootEntity返回的每一行会创建一个document。
  • onError : (abort|skip|continue) . 当处理entity的行为document的过程中发生异常该如何处理:默认是 abort,放弃导入。skip:跳过这个文档,continue:继续索引该文档。
  • preImportDeleteQuery : 在全量导入前,如需要进行索引清理cleanup,可以通过此属性指定一个清理的索引删除查询,否则用的是‘*:*’(删除所有)。只有的直接子Entity设置此属性有效。
  • postImportDeleteQuery : 指定全量导入后需要进行索引清理的delete查询。只有的直接子Entity设置此属性有效.

SqlEntityProcessor 的 entity 属性说明:

  • query (required) : 从数据库中加载实体数据用的SQL语句。
  • deltaQuery : 仅用于增量导入,指定增量数据pk的查询SQL。
  • parentDeltaQuery : 指定增量关联父实体的pk的查询SQL。
  • deletedPkQuery :仅用于增量导入,被删除实体的pk查询SQL。
  • deltaImportQuery : (仅用于增量导入) .指定增量导入实体数据的查询SQL。如果没有指定该查询语句,solr将使用query属性指定的语句,经修改后来查询加载增量数据(这很容易出错)。在该语句中往往需要引用deltaQuery查询结果的列值,通过 ${dih.delta.} 来引用,如:select * from tbl where id=${dih.delta.id}

全量导入,db-data-config.xml配置文件结果:

                                                                                                                                                                                        

7.启动Solr,测试结果

1a144c858e858c26370117f2417e4ded.png

在内核mycore的DataImport选项下,可以查看我们的配置信息。点击Execute执行。

执行完后,就可以查询出索引的数据了

7b7bde87d1bc700ee1fe61a4bc8b4abc.png

在full-important的时候有以下这些选项,那么他们是干啥的。

112dc96f7b2f5674a0ba0801b0fde620.png

full-import : 请求启动全量导入:http://:/solr/dataimport?command=full-import

返回导入正在进行中的状态信息,导入会在一个新线程中开启(可能会需要一定时间完成导入)。导入完成后,导入的开始时间将存入到conf/dataimport.properties 文件中,用于后面的增量导入。增量导入完成后也会存入增量开始的时间到这个文件,用于下一次增量导入。

全量导入期间并不会阻塞solr查询。

其他附选参数:

  • clean : (default:'true'), 指定是否在导入前清理索引。
  • commit : (default:'true'),指定导入后是否提交。
  • optimize : (default:'true' up to Solr 3.6, 'false' afterwards),是否进行优化。
  • debug : (default:'false'), 是否以调试模式运行,开发下使用。调试模式下不会提交,除非明确指定commit=true。

后续讲解Solr增量导入的例子。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值