第二章 solr数据导入

本章简介

由于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 // 重启必须指定端口号

  1. 如下图步骤导入数据:
    数据说明:第四步骤这里应该是student,由于我做了两次测试,这里的图是第一次使用tomcat启动截的图,所以在这里下拉选择你在dataconfig中的entity标签name属性名对应的名称即可。

  2. 执行完成,点击刷新如下:

  3. 查询

q里面的参数是我们要查询的字段名称用:分割

执行查询后,右边就会出现查询的结果

非本次测试使用的数据步骤截图,按上文配置文件截图结果请参看图2

上面配置文件截图结果图,步骤和上图相同,查询结果如下

参考文档

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值