solr数据导入的两种方法

2020-01-24  本文已影响0人  就这些吗

数据一般都是来自数据库,而导入则有两种方式,一种是通过solr的管理页面和配置直接连接数据库,还有一种就是通过项目中代码操作(在这个项目中是用Mybatis将数据库中数据查出来之后再存到solr中)

如果~~你实在不想配置,没关系,在百度云中我上传了两个版本,solr-7.7.2-jetty是没有配置数据库链接的版本,solr-7.7.2-jetty-connectDB是配置了数据库链接的版本,里面均含有springboot-solr项目练手这个项目的实体类配置、和数据库中的数据,直接启动即可

链接:https://pan.baidu.com/s/1h2279pQZIDgCMLiP4DREbA
提取码:ziem

第一种:通过配置文件再管理页面导入

1.先建立个数据库,往里面加点数据。

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for info
-- ----------------------------
DROP TABLE IF EXISTS `info`;
CREATE TABLE `info` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `username` varchar(255) DEFAULT NULL,
  `email` varchar(255) DEFAULT NULL,
  `qq` varchar(255) DEFAULT NULL,
  `password` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=33326 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of info
-- ----------------------------
INSERT INTO `info` VALUES ('1', 'tycoding', '123@qq.com', '8989723', 'sdhsh90');
INSERT INTO `info` VALUES ('2', 'tumo', 'tycoding@163.com', '8989723', 'tumo');
INSERT INTO `info` VALUES ('3', '涂陌', '123@163.com', '8989723', 'tycodingss');
INSERT INTO `info` VALUES ('4', '往吝', '992987642@qq.com', '992987642', '123456');

2.上maven仓库下一个mysql-connector的jar包。
找到solr-7.7.1/dist下的solr-dataimporthandler-7.7.1.jar,solr-dataimporthandler-extras-7.7.1.jar。一共是3个jar包。
把这三个jar包拷贝到solr-7.7.1/server/solr-webapp/webapp/WEB-INF/lib文件夹下


image.png
image.png

拷贝到:


image.png

3.修改solr-7.7.1/server/solr/new_core/conf/db-data-config.xml,注意账号密码与自己的数据库对应 <field column="username" name="item_username"/>中,column为数据库的列名,name为managed-schema中配置的field的name


image.png
image.png
<dataConfig>
  <dataSource name="springboot_solr" type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://127.0.0.1:3306/springboot_solr" user="root" password="root" batchSize="-1" />
  <document name="springboot_solr">
    <entity name="info" pk="id" query="select * from info">
        <field column="id" name="id"/>
        <field column="username" name="item_username"/>
        <field column="email" name="item_email"/>
        <field column="qq" name="item_qq"/>
        <field column="password" name="item_password"/>
    </entity>
  </document>
</dataConfig>

4.运行solr后到Dataimpot就可以看到配置文件了,没看到的点下展开就行,记得勾选下面的Auto-Refresh Status,否则需要自己去刷新状态看是否导入完成,到这里直接点Execute就行啦。出现Indexing completed就说明导入完成了。
如果只导入了一部分数据,有些字段没有导入,请看下你的配置文件的字段有没有写错


image.png
image.png

5.执行完毕后就可以去Query里点下Execute Query来看下数据进来没啦,关于这部分Query的使用我会单独开个文章讲。留个坑!


image.png

第二种,项目中代码操作加载数据(这种方式也被留在了项目展示的代码里,可以去github上下载,这里作简单介绍)。

1.首先就是要有对应的实体类和@Field注解,这个注解是为了当实体类与solr中配置的field名字不同的时候做映射。


image.png

2.创建一个Utils类,用来查出来mysql中的数据后并提交,其中searchMapper为Dao层,solrTemplate为spring封装的用来操作solr的对象,类似于redisTemplate。
这里不做配置性说明,需要的可以down下来的代码。


image.png

3.也是最重要的一步,因为这个项目是springboot项目,需要在项目启动的main方法里就执行这个SolrUtils里的操作,因此需要在启动时候获取到ApplicationContext,再通过getBean方法获取到里面注册的bean对象,再调用这个对象的方法来完成导入操作。
第二次运行就可以把导入的方法注释掉了,否则会重复导入


image.png
上一篇下一篇

猜你喜欢

热点阅读