6.Solr配置DataImport导入索引数据、IK分词查询

目录


1. Apache Solr介绍、下载及其安装

2. core内核实例、IK分词器、Solr(单机、集群)

3. Solr基本命令(启动、停止、系统信息)

4. Solr的solrconfig.xml配置与managed.schema模式

5. Solr Admin UI操作(XML、JSON 新增|修改|删除|查询 索引)

6. Solr配置DataImport导入索引数据、IK分词查询

7. Java中使用Solr,历史版本(7.0.0之后、5.0.0~6.6.6、4.10.4之前)

8. 传统Spring整合Solr

9. Spring Boot整合Solr



Solr配置DataImport导入索引数据

DataImportHandler就是提供一种可配置的方式向solr导入数据,可以一次全部导入,也可以增量导入,还可以声明式提供可配置的任务调度,让数据定时的从关系型数据库更新数据到solr服务器

1.配置jar包(3个)

solr-dataimporthandler-extras-版本.jar、solr-dataimporthandler-版本.jar(dist文件中

mysql-connector-java-版本.jar(Maven库下载)
在这里插入图片描述
将以上三个jar导入至\server\solr-webapp\webapp\WEB-INF\lib中

2.修改添加core实例配置文件(需要更改三个位置)

(1)solrconfig.xml文件,添加requestHandler配置

指向一个自定义文件:data-config.xml,顾名思义,是配置相关数据源的
在这里插入图片描述

<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">  
	<lst name="defaults"> 
		<str name="config">data-config.xml</str>   
	</lst>
</requestHandler>  

(2)新建data-config.xml文件,添加配置

\Solr\solr-8.5.1\server\solr\mycore\conf
在这里插入图片描述
MySQL5用的驱动url是com.mysql.jdbc.Driver,MySQL6以后用的是com.mysql.cj.jdbc.Driver。版本不匹配便会报驱动类已过时的错误

<?xml version="1.0" encoding="UTF-8" ?>  
<?xml version="1.0" encoding="UTF-8" ?>  
<dataConfig>
	<dataSource driver="com.mysql.cj.jdbc.Driver" 
			url="jdbc:mysql://localhost:3306/yiyun_mall?autoReconnect=true&amp;useSSL=false&amp;characterEncoding=utf-8&amp;serverTimezone=UTC"
			user="root"
			password="root"/> 
			
	<document name="salesDoc">
		<entity name="o_item" query="select id,title,sell_point,price,image,cid,created,updated from yy_item" >
			<field name="id" column="id" />
			<field name="title" column="title" />
			<field name="sell_point" column="sell_point" />
			<field name="price" column="price" />
			<field name="image" column="image" />
			<field name="cid" column="cid" />
			<field name="created" column="created" />
			<field name="updated" column="updated" />
		</entity>
	</document>
</dataConfig>
<dataSource>
参数描述
namedataSource的名称,配置文件可以有多个datasource,使用name区分
type数据源类型,如JDBC
driver数据库驱动包,提前放到lib目录下
url数据库连接url
user数据库用户名
password数据库密码
<doucment>

用来配置如何从数据库导入数据构建document对象,主要有一个或多个<entity>即实体组成
<doucment>子元素<entity>属性

参数描述
name实体名称
dataSourcedataSource名称
query获取全部数据的SQL
deltaImportQuery获取增量数据时使用的SQL
deltaQuery获取pk的SQL
parentDeltaQuery获取父Entity的pk的SQL
<entity>子元素<field>
参数描述
nameSchema.xml中的字段
column数据库查询列名称

(3)修改schema.xml文件,添加在data-config中定义的字段

如果已经存在如id、name,则可不用重新添加

	<!-- 自带ID -->
	<field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" />
	<field name="title" type="text_ik" indexed="true" stored="true"/>
	<field name="sell_point" type="string" indexed="true" stored="true"/>
	<field name="price" type="pdouble" indexed="true" stored="true"/>
	<field name="image" type="string" indexed="true" stored="true"/>
	<field name="cid" type="pint" indexed="true" stored="true"/>
	<field name="created" type="pdate" indexed="true" stored="true"/>
	<field name="updated" type="pdate" indexed="true" stored="true"/>

在这里插入图片描述


3.全量或者增量导入数据

启动solr。选择mycore,选择dataimport命令界面
在这里插入图片描述

命令参数描述
clean决定在建立索引之前,删除以前的索引
commit决定这个操作之后是否要commit
optimize决定这个操作之后是否要优化

可以选择是全量导入还是增量导入,并且选择配置好的实体(entity的name)


全量导入

所谓全量索引一般指的是每次从数据库中读取需要导入的全部数据,然后提交到Solr Server,最后删除指定core的所有索引数据进行重建。全量导入一般在数据首次导入或者备份数据恢复时执行

Full Import(全量导入)工作原理
(1)执行本Entity的Query,获取所有数据
(2)针对每个行数据Row,获取pk,组装子Entity的Query
(3)执行子Entity的Query,获取子Entity的数据

增量导入

如果要使用增量导入,前提表必需有两个字段,一个是删除标志字段即逻辑删除标志:isdeleted,另一个则是数据创建时间字段:create_date,字段名称不一定非得是isdeleted和create_date,但必须要包含两个表示该含义的字段。根据数据创建时间跟上一次增量导入操作时间一对比,就可以通过SQL语句查询出需要增量导入的数据,根据isdeleted字段可以查询出被标记为删除的数据,这些数据的ID主键需要传递给solr,这样solr就能同步删除索引中相关Document,实现数据增量更新。如果数据表里的数据都是物理删除,没有逻辑标志字段的话,那么找出已删除的数据显得比较困难,所以这就是需要逻辑删除标志字段的原因。

Delta Import(增量导入)工作原理
(1)查找子Entity,直到没有为止;
(2)执行Entity的deltaQuery,获取变化数据的pk;
(3)合并子Entity parentDeltaQuery得到的pk;
(4)针对每一个pk Row,组装父Entity的parentDeltaQuery;
(5)执行parentDeltaQuery,获取父Entity的pk;
(6)执行deltaImportQuery,获取自身的数据;
(7)如果没有deltaImportQuery,就组装Query


4.Execute执行之后

等待一会然后刷新一下。可以再Overview中查看
在这里插入图片描述


分词查询

field#type必须指定分词器

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

未禾

您的支持是我最宝贵的财富!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值