一、开始前,需要知道

Solr连接MySQL

        2、能够通过Solr服务台对Solr进行简单操作

二、全量导入

全量导入,一般应用于初次使用时导入,特殊场景暂不考虑。

1、启动Solr服务端

2、示例图

【Java】Solr | MySQL | 全量导入 | 增量导入_Solr

 3、全量导入,没有额外配置,比较简单

三、增量导入

增量导入,即只把新增的数据导入到Solr,需要额外配置。

1、配置文件: \solr-8.8.2\server\solr\hg-mysql\conf\data-config.xml

2、配置内容:

<entity name="fileInfo" 
query="select id, file_name, server_path, key_words from t_file_info where del_flag = '0'" pk="id"
deltaImportQuery = "select id, file_name, server_path, key_words from t_file_info where id = '${dataimporter.delta.id}'"
deltaQuery = "select id FROM t_file_info where create_time > '${dataimporter.last_index_time}' and del_flag = '0'"
deletedPkQuery = "SELECT id FROM t_file_info where del_flag = '1'"
>
<field column="id" name="file_id"/>
<field column="file_name" name="file_name"/>
<field column="server_path" name="server_path"/>
<field column="key_words" name="key_words"/>
</entity>

 3、示例图

【Java】Solr | MySQL | 全量导入 | 增量导入_mysql_02

 4、字段说明

1)deltaImportQuery,即增量导入的SQL;${dataimporter.delta.id},内置参数,对应deltaQuery查询到的ID

2)deltaQuery,增量ID查询;只能查询ID字段,不能有其他字段;${dataimporter.last_index_time}是最后一次索引时间,del_flag为逻辑删除[0:未删除,1:已删除]

3)deletedPkQuery,逻辑删除SQL;查询已经删除的记录;只能返回ID

5、增量操作

1)打开Solr服务台

2)示例图

【Java】Solr | MySQL | 全量导入 | 增量导入_字段_03

 3)导入时,留意一下“deltaQuery”中的create_time > '${dataimporter.last_index_time}',因为我测试时忽略了时间筛选,导致增量数据没有导入

 四、配置文件备份

配置文件: \solr-8.8.2\server\solr\hg-mysql\conf\data-config.xml

文件内容:

<?xml version="1.0" encoding="UTF-8"?>
<dataConfig>
<dataSource
type="JdbcDataSource"
driver="com.mysql.cj.jdbc.Driver"
url="jdbc:mysql://localhost:3306/hg-solr?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8"
user="hg-solr"
password="DnfZwE@Zz6QbAYjR4!ND" />
<document>
<entity name="fileInfo"
query="select id, file_name, server_path, key_words from t_file_info where del_flag = '0'" pk="id"
deltaImportQuery = "select id, file_name, server_path, key_words from t_file_info where id = '${dataimporter.delta.id}'"
deltaQuery = "select id FROM t_file_info where create_time > '${dataimporter.last_index_time}' and del_flag = '0'"
deletedPkQuery = "SELECT id FROM t_file_info where del_flag = '1'"
>
<field column="id" name="file_id"/>
<field column="file_name" name="file_name"/>
<field column="server_path" name="server_path"/>
<field column="key_words" name="key_words"/>
</entity>
</document>
</dataConfig>