在前面的博文中,已完成了在tomcat中对solr的部署,为solr添加了一个自定义的core,并且引入了ik分词器。

那么该如何将本地的mysql的数据导入到solr中呢?

准备工作:

1、mysql数据源:myuser库中的user表(8条数据),其中这个updateTime字段是用于solr更新数据库数据的依据,表中必须得有这个字段。/*

Navicat MySQL Data Transfer

Source Server         : localhost

Source Server Version : 50521

Source Host           : localhost:3306

Source Database       : user

Target Server Type    : MYSQL

Target Server Version : 50521

File Encoding         : 65001

Date: 2016-10-21 10:14:01

*/

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------

-- Table structure for user

-- ----------------------------

DROP TABLE IF EXISTS `user`;

CREATE TABLE `user` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`name` varchar(255) NOT NULL,

`password` varchar(255) NOT NULL,

`updateTime` datetime DEFAULT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;

-- ----------------------------

-- Records of user

-- ----------------------------

INSERT INTO `user` VALUES ('1', '张三', 'abc', '2016-10-21 10:10:58');

INSERT INTO `user` VALUES ('2', '李四', 'def', '2016-10-21 10:10:58');

INSERT INTO `user` VALUES ('3', '王五', 'ghi', '2016-10-21 10:10:58');

INSERT INTO `user` VALUES ('4', '赵六', 'jkl', '2016-10-21 10:10:58');

INSERT INTO `user` VALUES ('5', '田七', 'mno', '2016-10-21 10:10:58');

INSERT INTO `user` VALUES ('6', '老八', 'pqr', '2016-10-21 10:10:58');

INSERT INTO `user` VALUES ('7', '金九', 'stu', '2016-10-21 10:10:58');

INSERT INTO `user` VALUES ('8', '银十', 'vwx', '2016-10-21 10:10:58');

2、数据源配置文件:新建文件:data-config.xml,文件内容如下:

url="jdbc:mysql://localhost:3306/myuser" user="root" password="root"

batchSize="100" />

query="SELECT id,name,password,updateTime FROM user"

deltaImportQuery="SELECT id,name,password,updateTime FROM user where id='${dataimporter.delta.id}'"

deltaQuery="SELECT id FROM user where updateTime > '${dataimporter.last_index_time}'">

3、mysql驱动jar包和solr导入数据所需的jar包:mysql-connector-java-5.1.32.jar(这个大家都有) 和 solr-dataimporthandler-4.10.2.jar(这个在solr-4.10.2\dist目录下可以找到,复制出来一个即可)

====================================================================================

准备工作完成之后就可以进行配置和操作了。

步骤一:将刚才准备的那两个jar包复制到apache-tomcat-7.0.72\webapps\solr\WEB-INF\lib目录下。

步骤二:将准备的data-config.xml文件复制到solrhome\simple\conf目录下,和schema.xml同一目录。

步骤三:在solrhome\simple\conf目录下找到solrconfig.xml文件,为该文件添加如下内容:

class="org.apache.solr.handler.dataimport.DataImportHandler">

data-config.xml

步骤四:在solrhome\simple\conf目录下找到schema.xml文件,打开并修改如下:<?xml  version="1.0" encoding="UTF-8" ?>

sortMissingLast="true" />

precisionStep="0" positionIncrementGap="0"/>

precisionStep="0" positionIncrementGap="0" />

precisionStep="8" positionIncrementGap="0" />

required="true" multiValued="false" />

id

步骤四:启动tomcat,浏览器访问:locahost:8080/solr 原来的simple中数没有任何数据的。

步骤五:导入mysql数据到solr中

再次查看数据,如果显示如下,那么恭喜你,数据导入成功!

=====================================================================================

如果想删除solr中导入的数据该如何操作,一上图就……了然

xml命令:

1、根据查询删除:删除所有数据*:*

当然,上面说的是手动删除,如果要删除的数据很多,想在下一次自动同步数据的时候自动删除指定的数据该如何做呢?

场景:有一批要拍卖的店铺数据存储在solr中,拍卖的店铺数据有一个拍卖结束时间(endTime),当拍卖结束时间一到,这条存储在solr中的拍卖数据就没有意义了,想要删除这条存储在solr中的数据。

按照上面的手动删除也不是不可以,但这人工操作未免太扯了,到时间人工去solr中删除这条数据耗时又耗力,也不太现实。

解决办法就是:

在data-config.xml的entity中添加:deletedPkQuery="select id from shops  where endTime < NOW()"

这一句,这句和entiy的query同级,目的是查询出所有店铺数据中结束时间小于当前时间的店铺id,

这个店铺id会和deltaQuery中收集到的id一并执行deltaImportQuery操作,只不过一个是添加数据,一个是删除数据。

如果是其他业务场景也可以借鉴下这篇博客中在表中添加isdelete字段的方式完成删除,其实只要有一个字段能够标识就行:

solr mysql 导入命令_(solr系列:四)将mysql数据库中的数据导入到solr中及删除solr中导入的数据...相关推荐

  1. 查看mysql版本命令_查看MySql版本号命令

    转自:https://blog.csdn.net/qq_38486203/article/details/80324014​ 这里介绍四中不同的方法,它们分别运行在不同的环境中,最后对每种方法的优劣以 ...

  2. mysql 帮助命令_一篇文章帮你搞定所有MySQL命令!

    MySQL的基本操作可以包括两个方面:MySQL常用语句如高频率使用的增删改查(CRUD)语句和MySQL高级功能,如存储过程,触发器,事务处理等.而这两个方面又可以细分如下: MySQL常用语句 表 ...

  3. mysql 批量远程_【shell--批量远程MySQL,执行命令】-【工作总结】

    昨天下班前,老板给了一批LOG数据库IP地址,需要统计LOG表里Message字段top 10的结果,并输出到一个excel文件里. 抽查看了下,有两种格式的以当天日期结尾的表名.由于数量太多,时间紧 ...

  4. mysql语句命令_常用MySQL语句(命令行)

    # 命令行客户端MySQLMySQL是一个关系型数据库管理系统 安装MySQL服务端软件使用: sudo apt-get install mysql-server 安装MySQL客户端软件使用: su ...

  5. ubuntu中mysql怎么退出命令_如何使用Python进行MySQL数据库管理

    本节我们将学习使用Python进行MySQL数据库管理.Python有多种用于MySQL数据库管理的模块,这里使用MySQLdb模块.MySQLdb模块是MySQL数据库服务器的接口,用于向Pytho ...

  6. mysql root命令_设置更改root密码、连接mysql、mysql常用命令

    目录 一.设置更改root密码 二.连接mysql 三.mysql常用命令 一.设置更改root密码 检查mysql服务是否启动 [root@minglinux-01 ~] ps aux |grep ...

  7. Win7进入mysql环境命令_怎样在win7中使用命令行启动mysql数据库服务

    展开全部 1.Win菜单键+R组合打开32313133353236313431303231363533e58685e5aeb931333363383962Winodws7运行窗口,在打开编辑框中输入c ...

  8. mysql管理应用_如何在PHP和MySQL中制作出色的库存管理应用程序

    mysql管理应用 by Richard 理查德(Richard) 如何在PHP和MySQL中制作出色的库存管理应用程序 (How to Make an Awesome Inventory Manag ...

  9. 阿里云rds for mysql平台介绍_阿里云RDS for MySQL实例创建账号和数据库?

    本文介绍如何为RDS for MySQL实例创建账号和数据库. 账号类型RDS for MySQL实例支持两种数据库账号:高权限账号和普通账号.您可以在控制台管理所有账号和数据库,账号拥有的具体权限请 ...

最新文章

  1. c#有多少种可能导致写文件失败?
  2. Catalan数推导(转载)
  3. HTML鼠标悬停图片置顶,jquery实现鼠标悬浮停止轮播特效
  4. 怎么选择跨境电商ERP系统?
  5. 收藏:如何获取当前已经打开的IE对象(VB6代码)
  6. [LeetCode] 1. Two Sum
  7. 人生苦短之我用Python篇(socket编程)
  8. android加载框效果《IT蓝豹》
  9. linux运行roon,Roon + HQPlayer + NAA + 解码 网线直连方案
  10. 小程序-----小白入门
  11. 【解决方案】STM32L152单片机驱动段码LCD屏,执行HAL_LCD_Init函数失败返回HAL_TIMEOUT,长时间卡在LCD_FLAG_RDY的while循环里面的解决办法
  12. 责任链模式:“张三为了纪念王二请假的悲催经历想出来的一种设计模式”
  13. 三级网络技术考前复习
  14. 无线WIFI网络系统介绍
  15. JZOJ[5971]【北大2019冬令营模拟12.1】 party(1s,256MB)
  16. 大学三年如何使用计算机论文,大学计算机导论论文3000字.docx
  17. Web前端之jQuery库
  18. java 生成印章 图章
  19. oracle存储过程语法和用法,oracle存储过程 语法 函数 总结
  20. Java 8 Time Api 使用(LocalDate,LocalTime和LocalDateTime等)

热门文章

  1. 13种老人不适合带孩子_这十三种老人不适宜带孩子,亲爹亲妈们慎重!
  2. 计科系大一c语言期末考试题,大一大学计算机基础期末考试试题「附答案」
  3. c++ 数据类型转换笔记
  4. android camera之nv21旋转
  5. server2016 查看图片 预览图片
  6. FFmpeg将Jpeg 编码到视频中
  7. HTML5网页上播放mp4失败的原因
  8. python的nan,NaN,NAN
  9. 3行代码,Python数据预处理提速6倍
  10. caffe中各层的作用