转载自 https://blog.csdn.net/csdn_avatar_2019/article/details/89404017
1、准备
1)下载mysql驱动包:mysql-connector-java
2)将驱动包考培到solr-8.1.1/dist目录下
2、创建测试数据
-- solr测试表结构
CREATE TABLE meta_solr (
id int NOT NULL COMMENT '主键',
name varchar(64) NOT NULL COMMENT '学生姓名',
sex int default NULL COMMENT '性别 0=女 1=男',
address varchar(200) DEFAULT NULL COMMENT '居住地址',
update_time datetime NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'SOLR数据更新时间戳',
deleted int(1) DEFAULT 0 COMMENT '逻辑删除',
primary key (ID)
) COMMENT='meta_solr表';
-- 全量测试数据
INSERT INTO meta_solr VALUES (1, '张三', 0, '甘肃省兰州市城关区酒泉路211号', default, default);
INSERT INTO meta_solr VALUES (2, '李四', 1, '江西省泰和县中山路', default, default);
INSERT INTO meta_solr VALUES (3, '郭海藻', 0, '北京市朝阳区朝阳人民法院路355号', default, default);
INSERT INTO meta_solr VALUES (4, '唐三', 1, '斗罗大陆史莱克学院1号楼', default, default);
INSERT INTO meta_solr VALUES (5, '小舞', 1, '斗罗大陆史莱克学院22号楼', default, default);
INSERT INTO meta_solr VALUES (6, '萧炎', 1, '斗气大陆五大家族萧家门房', default, default);
INSERT INTO meta_solr VALUES (7, '哈登', 1, '美国火箭丰田球场', default, default);
3、创建和配置核心目录
1)在solr-8.1.1/server/solr下创建meta_db目录(核心名称作为目录),核心名称为:meta_db(可以理解为数据库)
2)将solr-8.1.1/server/solr/configsets/_default下conf目录拷贝到solr-8.1.1/server/solr/meta_db目录下
3)修改solr-8.1.1/server/solr/meta_db/conf/solrconfig.xml,在<requestHandler name="/select" class="solr.SearchHandler">前面上加上一个dataimport的处理的Handler
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
<lst name="defaults">
<str name="config">data-config.xml</str>
</lst>
</requestHandler>
4)修改solr-8.1.1/server/solr/meta_db/conf/solrconfig.xml,引入mysql和solr数据导入相关配置包
<!-- 引入mysql相关配置jar包-->
<lib dir="${solr.install.dir:../../../..}/dist/" regex="mysql-connector-java-8.0.16.jar" />
<lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-dataimporthandler-.*\.jar" />
5)在solr-8.1.1/server/solr/meta_db/conf下创建data-config.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<dataConfig>
<dataSource name="data_source"
type="JdbcDataSource"
driver="com.mysql.cj.jdbc.Driver"
url="jdbc:mysql://192.168.3.10:3306/meta_db"
user="root"
password="root"
batchSize="-1"/>
<document name="meta_solr_doc">
<!-- 全量导入数据配置 -->
<entity name="meta_solr"
dataSource="data_source"
pk="id"
query="select id, name, sex, address, DATE_FORMAT(update_time, '%Y-%m-%d %H:%i:%S') as updateTime, deleted from meta_solr">
<field column="id" name="id"/>
<field column="name" name="name"/>
<field column="sex" name="sex"/>
<field column="address" name="address"/>
<field column="updateTime" name="updateTime"/>
<field column="deleted" name="deleted"/>
</entity>
</document>
</dataConfig>
格式化时间
<entity name="meta_solr"
dataSource="data_source"
pk="id"
query="select id, name, sex, address, DATE_FORMAT(update_time, '%Y-%m-%d %H:%i:%S') as updateTime, deleted from meta_solr">
<field column="id" name="id"/>
<field column="name" name="name"/>
<field column="sex" name="sex"/>
<field column="address" name="address"/>
<field column="updateTime" name="updateTime"/>
<field column="deleted" name="deleted"/>
</entity>
6)修改solr-8.1.1/server/solr/meta_db/conf/managed-schema,这是solr对数据库里的数据进行索引的模式(或者在solr管理界面添加)
<!-- 映射数据库表结构的字段,update_time和deleted可忽略-->
<field name="name" type="string" indexed="true" stored="true" required="true" multiValued="false" />
<field name="sex" type="string" indexed="true" stored="true" required="true" multiValued="false" />
<field name="address" type="string" indexed="true" stored="true" required="true" multiValued="false" />
<field name="updateTime" type="string" multiValued="false" indexed="true" required="true" stored="true"/>
<field name="deleted" type="string" multiValued="false" indexed="true" required="true" stored="true"/>
7)重启solr
8)创建核心
4、导入数据,点击Dataimport,勾选clean和commit,点击Execute,没有报错会indexing,刷新之后就会提示导入的行数等信息
5、验证是否导入