Solr(五)Solr从Mysql导入数据,Solr数据库批量导入

solr使用教程 Mysql导入数据

Posted by Oumuv on December 1, 2018

环境要求

  • solr7.x

前提

搭建一个Solr服务器并创建一个core,参考:Solr(一)基于tomcat的solr环境搭建

步骤

一、创建一张测试用的表

创建一张表取名solr_data,表中包含三个字段(id,name,title),手动插入测试数据,如下图:

二、配置data-config.xml

在solrcore中conf目录新建一个data-config.xml文件,添加如下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?xml version="1.0" encoding="UTF-8" ?>
<dataConfig>
<!-- 配置数据库的地址 -->
    <dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/crm" user="root" password="root" />
    <document>
    <!-- solr_data 对应数据库的表名 -->
        <entity name="haLock" query="select * from solr_data" deltaQuery="select * from solr_data">
        <!-- 对应的字段名 column表示数据库的字段名,name表示solr中的字段名-->
            <field column="id" name="id" />
            <field column="title" name="text_ik" />
            <field column="name" name="name" />
        </entity>
    </document>
</dataConfig>

三、使data-config.xml配置生效

编辑solrcore中conf目录下的solrconfig.xml,在<requestHandler name="/select" class="solr.SearchHandler">标签前加入如下配置使data_config.xml生效

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

四、检查schema文件

关于schema配置详解可以参考上一片的文章(Solr(四)Solr7.X中文分词器使用,IKAnalyzer使用及配置),里面有写。

上面data-config.xml的字段名需要在schema中配置,检查一下schema是否包含有id、name、text_ik字段,如果没有则需要手动添加,格式如下:

1
<field name="字段名" type="字段类型" indexed="true" stored="true"/>

id、name字段solr默认都已经配有的,所以我这里不用再配,text_ik字段是我上一篇中配的中文分词器(Solr(四)Solr7.X中文分词器使用,IKAnalyzer使用及配置)就按这个格式进行配置:

1
<field name="text_ik" type="text_ik" indexed="true" stored="true"/>

五、导入需要用到的jar

将solr原始目录中的dist文件夹下的solr-dataimporthandler、solr-dataimporthandler-extras两个jar包拷贝到solr的WEB-INF\lib下

下载mysql连接包(mysql-connector-java)拷贝到solr的WEB-INF\lib下。

启动、测试

重启solr,在如下页面中点【Execute】按钮导入数据,再按【Refresh status】刷新,右边状态栏绿色表示导入成功

查询一下数据是否已生效

导入完成