solr mysql 导入命令_(solr系列:四)将mysql数据库中的数据导入到solr中及删除solr中导入的数据...
在前面的博文中,已完成了在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中导入的数据...相关推荐
- 查看mysql版本命令_查看MySql版本号命令
转自:https://blog.csdn.net/qq_38486203/article/details/80324014 这里介绍四中不同的方法,它们分别运行在不同的环境中,最后对每种方法的优劣以 ...
- mysql 帮助命令_一篇文章帮你搞定所有MySQL命令!
MySQL的基本操作可以包括两个方面:MySQL常用语句如高频率使用的增删改查(CRUD)语句和MySQL高级功能,如存储过程,触发器,事务处理等.而这两个方面又可以细分如下: MySQL常用语句 表 ...
- mysql 批量远程_【shell--批量远程MySQL,执行命令】-【工作总结】
昨天下班前,老板给了一批LOG数据库IP地址,需要统计LOG表里Message字段top 10的结果,并输出到一个excel文件里. 抽查看了下,有两种格式的以当天日期结尾的表名.由于数量太多,时间紧 ...
- mysql语句命令_常用MySQL语句(命令行)
# 命令行客户端MySQLMySQL是一个关系型数据库管理系统 安装MySQL服务端软件使用: sudo apt-get install mysql-server 安装MySQL客户端软件使用: su ...
- ubuntu中mysql怎么退出命令_如何使用Python进行MySQL数据库管理
本节我们将学习使用Python进行MySQL数据库管理.Python有多种用于MySQL数据库管理的模块,这里使用MySQLdb模块.MySQLdb模块是MySQL数据库服务器的接口,用于向Pytho ...
- mysql root命令_设置更改root密码、连接mysql、mysql常用命令
目录 一.设置更改root密码 二.连接mysql 三.mysql常用命令 一.设置更改root密码 检查mysql服务是否启动 [root@minglinux-01 ~] ps aux |grep ...
- Win7进入mysql环境命令_怎样在win7中使用命令行启动mysql数据库服务
展开全部 1.Win菜单键+R组合打开32313133353236313431303231363533e58685e5aeb931333363383962Winodws7运行窗口,在打开编辑框中输入c ...
- mysql管理应用_如何在PHP和MySQL中制作出色的库存管理应用程序
mysql管理应用 by Richard 理查德(Richard) 如何在PHP和MySQL中制作出色的库存管理应用程序 (How to Make an Awesome Inventory Manag ...
- 阿里云rds for mysql平台介绍_阿里云RDS for MySQL实例创建账号和数据库?
本文介绍如何为RDS for MySQL实例创建账号和数据库. 账号类型RDS for MySQL实例支持两种数据库账号:高权限账号和普通账号.您可以在控制台管理所有账号和数据库,账号拥有的具体权限请 ...
最新文章
- c#有多少种可能导致写文件失败?
- Catalan数推导(转载)
- HTML鼠标悬停图片置顶,jquery实现鼠标悬浮停止轮播特效
- 怎么选择跨境电商ERP系统?
- 收藏:如何获取当前已经打开的IE对象(VB6代码)
- [LeetCode] 1. Two Sum
- 人生苦短之我用Python篇(socket编程)
- android加载框效果《IT蓝豹》
- linux运行roon,Roon + HQPlayer + NAA + 解码 网线直连方案
- 小程序-----小白入门
- 【解决方案】STM32L152单片机驱动段码LCD屏,执行HAL_LCD_Init函数失败返回HAL_TIMEOUT,长时间卡在LCD_FLAG_RDY的while循环里面的解决办法
- 责任链模式:“张三为了纪念王二请假的悲催经历想出来的一种设计模式”
- 三级网络技术考前复习
- 无线WIFI网络系统介绍
- JZOJ[5971]【北大2019冬令营模拟12.1】 party(1s,256MB)
- 大学三年如何使用计算机论文,大学计算机导论论文3000字.docx
- Web前端之jQuery库
- java 生成印章 图章
- oracle存储过程语法和用法,oracle存储过程 语法 函数 总结
- Java 8 Time Api 使用(LocalDate,LocalTime和LocalDateTime等)