solr6.6教程-从mysql数据库中导入数据
Posted 朽木自雕也
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了solr6.6教程-从mysql数据库中导入数据相关的知识,希望对你有一定的参考价值。
建一个例子,给core导入索引数据,用于后面的实验。
1.创建一个数据库
创建一个数据库,并创建几条数据,表结构:
id自增
S_user用户信息
S_text随便填一些内容
注意:字符集UTF8
添加几条数据
2. 配置solrconfig.xml
sorlconfig.xml文件与managed-shema文件是经常要修改的文件。位于创建的core目录里面的config文件夹里。例如:
D:\\solrhome\\core_demo
在solrconfig.xml文件的后面添加如下信息:
<!--引入DataImportHandler类的jar--> <lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-dataimporthandler-.*\\.jar" /> <requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler"> <lst name="defaults"> <str name="config">data-config.xml</str> </lst> </requestHandler>
其中data-config.xml 需要在solrconfig.xml同级目录下自己手动创建
3.在目录D:\\solrhome\\core_demo\\conf 创建data-config.xml 暂时不填写内容,后面再写.
4.编写managed_schema
目录D:\\solrhome\\core_demo\\conf
managed_schema里面定义了很多域,其实是使用了lucene中的域。
什么是域?域的作用是定义一个solr索引里面的字段是什么类型,能做什么,怎么做。有点类似数据库中字段的类型。但表示的含义更加的丰富。
域的定义
Name:这个域的名称,在整个managed_schema文件里面需要唯一,不能重复,这里定义成跟数据库表字段的名称,方便使用。当然,也可以定义成其他名字
Type:表示这个字段的类型是什么,string是字符串类型,int是整形数据类型,date是时间类型,相当于数据库里面的timestamp
Indexed:是否索引
Stored:是否存储
multiValued:是否多值。在一个域下存储多个值。一个域下存储一个数组。
在managed_schema后面添加如下代码
<!--这里无需定义id,因为managed_schema文件已经在前面开头位置定义了,id是必须,并且唯一的--> <field name="S_user" type="string" indexed="true" stored="true" /> <field name="S_text" type="string" indexed="true" stored="true"/>
5.编写之前创建的data-config.xml
<dataConfig> <dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://127.0.0.1:3306/test" user="root" password="123456" batchSize="-1" /> <document> <entity name="mycore_test" query="select id,S_user,S_text from test"> <!--column的id是数据库的id,name的id是managed_schema里面的id,id是必须,并且唯一的--> <field column="id" name="id" /> <field column="S_user" nam="S_user" /> <field column="S_text" name="S_text" /> </entity> </document> </dataConfig>
dataSource配置数据库信息
document配置数据库查询语句与managed_schema域的对应关系。目的是,在core导入数据的时候,会先通过该配置信息链接到数据库通过查询语句把数据查询出来,通过数据库字段与managed_schema域关联关系创建索引
开始导入数据
配置好了前面的信息,就可以在后台导入数据,配置信息需要reload一下core才能生效。如果配置文件出现错误,reload的时候也会有错误信息提示。
reload完之后,开始导入
点击Execute开始导入
如果数据量大可以勾选,自动刷新
如下图建立索引成功。
这里有几个需要注意的地方,是我遇到的问题
1.JAVA和MYSQL连接jar包是否匹配,如果不匹配会出现如下的错误,导入失败,即使提示提取成功,也是无法建立索引,因为jar版本不对。
同时Tomcat也会有报错信息如下:
最终的解决办法就是更换jar 包,我本机的MYSQL版本是
mysql jar包地址
D:\\tomcat\\webapps\\solr\\WEB-INF\\lib
JAVA版本是
现在我们查询下,看是否建立索引成功。
以上是关于solr6.6教程-从mysql数据库中导入数据的主要内容,如果未能解决你的问题,请参考以下文章