mac学习搭建solr8.x - 全量导入mysql数据到solr进行索引

1.solr服务需要下载安装完毕,且可以成功访问到solr控制台。

2.安装mysql数据库,因为本机使用docker安装的mysql,省略安装过程,如有需要可参考对应的安装文章。

3.下载mysql驱动包,阿里云的maven镜像网站和mvn网站都可以搜索mysql-connector-java进行下载,我这边下载的是mysql-connector-java-8.0.11.jar,匹配对应的mysql安装版本即可。

阿里云:https://maven.aliyun.com/mvn/search

maven:https://mvnrepository.com/

4.创建mysql数据库和表结构,示例以solr_demo表为例

-- solr测试表结构
CREATE TABLE solr_demo (
	id int NOT NULL COMMENT '主键',
	name varchar(64) NOT NULL COMMENT '学生姓名',
	sex int default NULL COMMENT '性别 0=女 1=男',
	address varchar(200) DEFAULT NULL COMMENT '居住地址',
	updateTime timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'SOLR数据更新时间戳',
	isDeleted int(1) DEFAULT 0 COMMENT '逻辑删除',
	primary key (ID)
) COMMENT='solr_demo表';

-- 全量测试数据
INSERT INTO solr_demo VALUES (1, '张三', 0, '甘肃省兰州市城关区酒泉路211号', default, default);
INSERT INTO solr_demo VALUES (2, '李四', 1, '江西省泰和县中山路', default, default);
INSERT INTO solr_demo VALUES (3, '郭海藻', 0, '北京市朝阳区朝阳人民法院路355号', default, default);
INSERT INTO solr_demo VALUES (4, '唐三', 1, '斗罗大陆史莱克学院1号楼', default, default);
INSERT INTO solr_demo VALUES (5, '小舞', 1, '斗罗大陆史莱克学院22号楼', default, default);
INSERT INTO solr_demo VALUES (6, '萧炎', 1, '斗气大陆五大家族萧家门房', default, default);
INSERT INTO solr_demo VALUES (7, '哈登', 1, '美国火箭丰田球场', default, default);
-- 增量测试数据
INSERT INTO solr_demo VALUES (8, 'James', 0, '美国洛杉矶湖人队', default, default);
INSERT INTO solr_demo VALUES (9, 'McGrady', 0, '美国火箭丰田球场前排', default, default);

创建solr_demo表之后,目的是将这张表的前7条数据导入到solr中,后2条数据用户增量更新教程,可以不用导入。

5.将/solr-8.0.0/server/solr/configsets/_default拷贝到/solr-8.0.0/server/solr下,重新命名为你需要新建的core名,这里用demo_core命名

6.修改/solr-8.0.0/server/solr/demo_core/conf/solrconfig.xml,添加mysql配置信息

在<requestHandler name="/select" class="solr.SearchHandler">前面上加上一个dataimport的处理的Handler

扫描二维码关注公众号,回复: 5977777 查看本文章
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
    <lst name="defaults">
        <str name="config">data-config.xml</str>
    </lst>
</requestHandler>

7.修改/solr-8.0.0/server/solr/demo_core/conf/solrconfig.xml,引入mysql和solr数据导入相关配置包

<!-- 引入mysql相关配置jar包-->
<lib dir="${solr.install.dir:../../../..}/dist/" regex="mysql-connector-java-8.0.11.jar" />
<lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-dataimporthandler-.*\.jar" />

将第3步下载好的mysql-connector-java-8.0.11.jar包拷贝至 /solr-8.0.0/dist目录下,因为solr-dataimporthanlder-*.jar已经在dist目录下,所以无需拷贝。

8.在同级目录/solr-8.0.0/server/solr/demo_core/conf/下新建data-config.xml文件,内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<dataConfig>
    <dataSource name="source_demo"
                type="JdbcDataSource"
                driver="com.mysql.jdbc.Driver"
                url="jdbc:mysql://localhost:3306/hornet"
                user="root"
                password="123456"
                batchSize="-1"/>
    <document name="demo_doc">
        <!-- 全量导入数据配置 -->
        <entity name="solr_demo" 
                dataSource="source_demo"
                pk="id" 
                query="select * from solr_demo">
            <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="isDeleted" name="isDeleted"/>
        </entity>
    </document>
</dataConfig>

配置说明:

dataSource是数据库数据源

entity是一张表对应的实体,pk是主键,query是查询语句

field对应一个字段,column是数据库里的column名,后面的name属性对应着solr的filed的名字

9.修改同目录/solr-8.0.0/server/solr/demo_core/conf/managed-schema,这是solr对数据库里的数据进行索引的模式

<!-- 映射数据库表结构的字段,updateTime和isDeleted可忽略-->
<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" />

10.启动或者重启solor

11.控制台增加一个core:Core Admin -> Add Core -> demo_core,如下图所示:

添加成功如下图:

说明:还有一种方式通过命令行生成core,本着简单操作的原则,这里没有列举。 

12.导入数据,左边菜单Core Selector选中demo_core,点击Dataimport,弹出的新页面里面勾选clean和commit,然后点击Execute,没有报错的话就会indexing,刷新之后会提示导入的行数等信息

13.验证是否导入,在当前demo_core菜单下,点击query,再点击ExecuteQuery就会看到插入的结果

直接点击Execute Query的话是默认查所有数据的,如果需要条件筛选查询,需要修改q输入框的值,到这里全量导入工作就做完了。

猜你喜欢

转载自blog.csdn.net/csdn_avatar_2019/article/details/89404017
今日推荐