solr mysql dih_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配置文件可在目录下:example\example-DIH\solr\db\conf\db-data-config.xml拷贝。

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

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

0f5843bb054a4a6f97c80696f72c569a.png

3.配置数据源

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

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

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

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

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

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

字段对应规则说明:

自动进行名字相同配对;对于名字不同的通过显式配置 field的column、name属性指定编辑之前的拷贝的配置文件:db-data-config.xml

配置数据源,单数据源:

多数据源:

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

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

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

bd82502467785dd3e94e3ea753b41e67.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拷贝的官方自带的例子:

086b0bc9f80fc77fed86c9a86178f717.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,测试结果

5203ffdec256061ec867c4aaba0521d5.png

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

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

406ecd077fee2faf40750c95c3cf4f74.png

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

bf2edc3d697b04716967db4cf6598274.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、付费专栏及课程。

余额充值