环境要求
- solr7.x
前提
搭建一个Solr服务器并创建一个core,参考:Solr(一)基于tomcat的solr环境搭建
步骤
一、创建一张测试用的表
创建一张表取名solr_data,表中包含三个字段(id,name,title),手动插入测试数据,如下图:
二、配置data-config.xml
在solrcore中conf目录新建一个data-config.xml文件,添加如下内容:
<?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生效
<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字段,如果没有则需要手动添加,格式如下:
<field name="字段名" type="字段类型" indexed="true" stored="true"/>
id、name字段solr默认都已经配有的,所以我这里不用再配,text_ik字段是我上一篇中配的中文分词器(Solr(四)Solr7.X中文分词器使用,IKAnalyzer使用及配置)就按这个格式进行配置:
<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】刷新,右边状态栏绿色表示导入成功
查询一下数据是否已生效