【Java】Solr | MySQL | 全量导入 | 增量导入
原创
©著作权归作者所有:来自51CTO博客作者hgsuper的原创作品,请联系作者获取转载授权,否则将追究法律责任
一、开始前,需要知道
Solr连接MySQL
2、能够通过Solr服务台对Solr进行简单操作
二、全量导入
全量导入,一般应用于初次使用时导入,特殊场景暂不考虑。
1、启动Solr服务端
2、示例图
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、示例图
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)示例图
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>