本章简介
由于solr本身提供的有页面方式数据提交,所以如果只是少量数据我们可以通过页面方式把json数据提交上去。同时我们也可以通过配置实现mysql数据库中把数据导入其中。
不管哪种方式导入数据都要依托一个数据core来进行各种操作,因此必须现有core然后才能进行后面的数据操作。
创建Core
1.solr页面方式创建core(很简单这里就不演示了)
2.控制台命令创建core
* 控制台通过命令solr create_core -help 可查看创建Core的帮助信息
* 创建一个名为s1的core,输入命令solr create -c s1 -d basic_configs 即可
solr create -c s1 -d basic_configs
d指定配置文件。创建的core在path\solr-5.3.0\server\solr 中可以找到,在solr的管理界面也可以找到。
数据的导入
1.solr页面json导入
2.mysql数据库中导入
solr管理页面方式导入json
json数据如下,以北京七天的天气数据为例
{
"fengxiang": "北风",
"fengli": "5-6级",
"high": "高温 24℃",
"type": "晴",
"low": "低温 11℃",
"date": "3日星期六"
},
{
"fengxiang": "北风",
"fengli": "4-5级",
"high": "高温 19℃",
"type": "晴",
"low": "低温 8℃",
"date": "4日星期日"
},
{
"fengxiang": "无持续风向",
"fengli": "微风",
"high": "高温 21℃",
"type": "晴",
"low": "低温 9℃",
"date": "5日星期一"
},
{
"fengxiang": "无持续风向",
"fengli": "微风",
"high": "高温 21℃",
"type": "多云",
"low": "低温 10℃",
"date": "6日星期二"
},
{
"fengxiang": "无持续风向",
"fengli": "微风",
"high": "高温 24℃",
"type": "晴",
"low": "低温 12℃",
"date": "7日星期三"
},
{
"fengxiang": "无持续风向",
"fengli": "微风",
"high": "高温 23℃",
"type": "晴",
"low": "低温 11℃",
"date": "8日星期四"
}
],
"yesterday": {
"fl": "微风",
"fx": "无持续风向",
"high": "高温 23℃",
"type": "晴",
"low": "低温 12℃",
"date": "2日星期五"
}
在左侧的下拉框选择new_core后会出现document菜单,点击它,右侧则会出现操作界面,我们复制一条数据为例,执行submit Document,可以看到右侧出现了success说明成功了
点击左侧菜单中Query在右侧点击Execute Query可以看到数据都查询出来了
mysql数据导入
配置文件
cd /home/laiding/ide/solr-6.3.0/server/solr
ls
configsets README.txt s1 sc solr.xml zoo.cfg
这里选择s1数据核为测试点
cd s1
ls
conf core.properties data
这便是一个数据核的重要三个部分:
2.1. mysql数据准备
SET FOREIGN_KEY_CHECKS=0;
-- Table structure for student
DROP TABLE IF EXISTS student;
CREATE TABLE student (
sid bigint(20) NOT NULL,
sname varchar(255) DEFAULT NULL,
sage int(11) DEFAULT NULL,
saddress varchar(255) DEFAULT NULL,
sdescript text,
PRIMARY KEY (sid)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- Records of student
INSERT INTO student VALUES ('1', '李四', '23', '中华路1号', '好学生');
INSERT INTO student VALUES ('2', '张三', '34', '华信路3号', '坏学生,经常做坏事!');
2.1 修改solrconfig.xml
进入配置文件夹:s1/conf 。
2.1.1 添加数据导入请求节点
在solrconfig.xml中添加如下代码:
在solrconfig.xml的 之上添加
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
<lst name="defaults">
<str name="config">data-config.xml</str>
</lst>
</requestHandler>
如下图:在searchhandler注释下添加
2.1.2 配置相应的jar文件到lib中
solr-6.3.0\dist ,有两个:solr-dataimporthandler-extras-6.3.0.jar,solr-dataimporthandler-6.3.0.jar
同时我们也要把mysql 的驱动mysql-connector-java-5.1.26.jar放入该目录下
找到行
在其下面添加如下行
<lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-dataimporthandler-\d.*\.jar" />
<lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-dataimporthandler-extras-\d.*\.jar" />
<lib dir="${solr.install.dir:../../../..}/dist/" regex="mysql-connector-java-\d.*\.jar" />
这样就可以用正则方式把我们需要的jar包导入进去,记得在使用之前需要重启solr服务
2.2 添加data-config.xml
在同目录下(s1/conf)添加文件data-config.xml,并配置数据库查询的链接如下
<dataConfig>
<dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:8983/solr"
user="root"
password="root"/>
<document name="lhx">
<entity name="student" pk="sid" query="select sid,sname,sage,saddress,sdescript from student">
<field column="sid" name="id" />
<field column="sname" name="name" />
<field column="sage" name="age" />
<field column="saddress" name="address" />
<field column="sdescript" name="descript" />
</entity>
</document>
</dataConfig>
这个随便取名,其他根据文件名称取
name指表名,pk是主键名,query是查询SQL语句。
field标签解释:
column是列名,对应数据库中相关表中字段的名称
name就是solr这边对应的名称,该字段需要在schema.xml中配置好
字段都要一一映射
2.3 配置managed-schema的field信息
最后在conf文件下的managed-schema(6.0之前的版本是schema.xml)配置field信息
原文件如下
这里的field是系统自动生成的需要保留,主键必须有,所以这里依然使用系统默认的id,只要在上面提到的隐射标签中和表中的主键对应即可
系统自带的这个字段注释调,拷贝修改如下主键类型为int
<field name="id" type="int" indexed="true" stored="true" required="true" multiValued="false" />
<field name="name" type="string" indexed="true" stored="true" multiValued="false" />
<field name="age" type="int" indexed="true" stored="true" multiValued="false" />
<field name="address" type="string" indexed="true" stored="true" multiValued="false" />
<field name="descript" type="string" indexed="true" stored="true" multiValued="false" />
<!-- doc values are enabled by default for primitive types such as long so we don't index the version field -->
<field name="_version_" type="long" indexed="false" stored="false"/>
<field name="_root_" type="string" indexed="true" stored="false" docValues="false" />
<field name="_text_" type="text_general" indexed="true" stored="false" multiValued="true"/>
3 系统重启并导入数据
solr restart -p 8983 // 重启必须指定端口号
如下图步骤导入数据:
数据说明:第四步骤这里应该是student,由于我做了两次测试,这里的图是第一次使用tomcat启动截的图,所以在这里下拉选择你在dataconfig中的entity标签name属性名对应的名称即可。
执行完成,点击刷新如下:
查询
q里面的参数是我们要查询的字段名称用:分割
执行查询后,右边就会出现查询的结果
非本次测试使用的数据步骤截图,按上文配置文件截图结果请参看图2
上面配置文件截图结果图,步骤和上图相同,查询结果如下