返回顶部
首页 > 资讯 > 数据库 >(solr系列:四)将mysql数据库中的数据导入到solr中及删除solr中导入的数据
  • 306
分享到

(solr系列:四)将mysql数据库中的数据导入到solr中及删除solr中导入的数据

2024-04-02 19:04:59 306人浏览 八月长安
摘要

在前面的博文中,已完成了在Tomcat中对solr的部署,为solr添加了一个自定义的core,并且引入了ik分词器。那么该如何将本地的Mysql的数据导入到solr中呢?准备工作:1、mysql数据源:m

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

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

准备工作:

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



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,文件内容如下

<dataConfig>
	<dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver"
		url="jdbc:mysql://localhost:3306/myuser" user="root" password="root"
		batchSize="100" />
	<document>
		<entity name="user" pk="id"
			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}'">
			<field column="id" name="id" />
			<field column="name" name="name" />
			<field column="password" name="password" />
			<field column="updateTime" name="updateTime" />
		</entity>
	</document>
</dataConfig>

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文件,为该文件添加如下内容:

 <requestHandler name="/dataimport" 
 class="org.apache.solr.handler.dataimport.DataImportHandler">
	<lst name="defaults">
	     <str name="config">data-config.xml</str>
	</lst>
  </requestHandler>

步骤四:在solrhome\simple\conf目录下找到schema.xml文件,打开并修改如下:

<?xml version="1.0" encoding="UTF-8" ?>
<schema name="example" version="1.5">
	<!--定义type类型-->
  <types>
		<fieldType name="string" class="solr.StrField"
			sortMissingLast="true" />	
		<fieldType name="long" class="solr.TrieLongField"
			precisionStep="0" positionIncrementGap="0"/>			
		<fieldType name="int" class="solr.TrieIntField"
			precisionStep="0" positionIncrementGap="0" />
		<fieldType name="date" class="solr.TrieDateField"
			precisionStep="8" positionIncrementGap="0" />
		<fieldType name="text_ik" class="solr.TextField">
			<analyzer class="org.wltea.analyzer.lucene.IKAnalyzer" />
		</fieldType>
  </types>
  <!--定义字段-->
	<fields>
		<field name="_version_" type="long" indexed="true" stored="true" />
		<field name="_root_" type="string" indexed="true" stored="false" />
		<field name="id" type="int" indexed="true" stored="true"
			required="true" multiValued="false" />
		<!--注意:这里的field中的name要和data-config.xml中的name对应-->
		<!--字段为name的type类型可以是string-->
		<field name="name" type="text_ik" indexed="true" stored="true" />
		<field name="password" type="string" indexed="true" stored="true" />
		<field name="updateTime" type="date" indexed="true" stored="true" />
	</fields>
	<uniqueKey>id</uniqueKey>
	<solrQueryParser defaultOperator="AND" />
</schema>

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

(solr系列:四)将mysql数据库中的数据导入到solr中及删除solr中导入的数据


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


(solr系列:四)将mysql数据库中的数据导入到solr中及删除solr中导入的数据

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

(solr系列:四)将mysql数据库中的数据导入到solr中及删除solr中导入的数据



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

如果想删除solr中导入的数据该如何操作,一上图就……了然(solr系列:四)将mysql数据库中的数据导入到solr中及删除solr中导入的数据

(solr系列:四)将mysql数据库中的数据导入到solr中及删除solr中导入的数据xml命令:

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

<delete><query>*:*</query></delete>
<commit/>

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

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

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

解决办法就是:

    在data-config.xmlentity中添加:

deletedPkQuery="select id from shops  where endTime &lt; NOW()"

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

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


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

参考地址:Http://simplelife.blog.51cto.com/9954761/1883024 

您可能感兴趣的文档:

--结束END--

本文标题: (solr系列:四)将mysql数据库中的数据导入到solr中及删除solr中导入的数据

本文链接: https://lsjlt.com/news/37400.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • (solr系列:四)将mysql数据库中的数据导入到solr中及删除solr中导入的数据
    在前面的博文中,已完成了在tomcat中对solr的部署,为solr添加了一个自定义的core,并且引入了ik分词器。那么该如何将本地的mysql的数据导入到solr中呢?准备工作:1、mysql数据源:m...
    99+
    2024-04-02
  • 如何从mysql中将数据导入到oracle数据库中
    这篇文章主要讲解了“如何从mysql中将数据导入到oracle数据库中”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何从mysql中将数据导入到oracl...
    99+
    2024-04-02
  • 将excel中数据导入到指定的数据库表中
    1、先在数据库中查看表的结构:2、根据表的结构整理excel表结构及数据:3、右击数据库-任务-导入数据:4、选择源数据:5、选择目标:6、选择复制数据模式:7、选择目标数据表:8、点击下一步,然后执行。 ...
    99+
    2024-04-02
  • 如何将RRD数据库中数据导入MYSQL中
    本篇文章为大家展示了如何将RRD数据库中数据导入MYSQL中,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。将RRD数据库中数据导入MYSQL中一、RRD数据库及RR...
    99+
    2024-04-02
  • 怎么将原有的Oracle数据库中的数据导入到MySQL中
    本篇内容主要讲解“怎么将原有的Oracle数据库中的数据导入到MySQL中”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么将原有的Oracle数据库中的数据导...
    99+
    2024-04-02
  • 如何将sqlite3中数据导入到mysql中
    小编给大家分享一下如何将sqlite3中数据导入到mysql中,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!方法如下:从sqli...
    99+
    2024-04-02
  • Navicat中怎么将Oracle数据库导入到MySQL
    本篇文章给大家分享的是有关Navicat中怎么将Oracle数据库导入到MySQL,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。一.下载和激活...
    99+
    2024-04-02
  • 怎么将oracle数据导入到mysql中
    本篇文章为大家展示了怎么将oracle数据导入到mysql中,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。    1、在PL/SQL中用sele...
    99+
    2024-04-02
  • EXCEL表数据导入到ORACLE数据库中
    将EXCEL表导入ORACLE数据库中一、建立表1.建立表2.查询表select * from yy;二、导入程序在excel中找到需要导入的数据2.将excel中的...
    99+
    2024-04-02
  • Python实现将MongoDB中的数据导入到MySQL
    本文主要介绍了一个将 MongoDB 中的数据导入到 mysql 中的 python 工具类 MongoToMysql。该工具类实现了获取 MongoDB 数据类型、创建 MySQL 表结构以及将数据从 MongoDB ...
    99+
    2023-05-05
    Python实现MongoDB数据导入MySQL Python MongoDB数据导入MySQL Python MongoDB MySQL
  • Sqoop怎么将MySQL数据导入到hive中
    这篇文章主要讲解了“Sqoop怎么将MySQL数据导入到hive中”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Sqoop怎么将MySQL数据导入到hive中”吧!MySQL表:mysql&...
    99+
    2023-06-02
  • 将MySQL的表数据全量导入clichhouse库中
    目录一、环境二、创建测试库表写入测试数据一、环境 tidb06 mysql5.7.32tidb05 clickhouse20.8.3.18 二、创建测试库表写入测试数据 tidb06...
    99+
    2024-04-02
  • Java将Excel数据导入到数据库的方法
    小编给大家分享一下Java将Excel数据导入到数据库的方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!所用Jar包 sqljdbc4.jar连接数据库的Jar...
    99+
    2023-05-30
    java excel 数据库
  • 把ACCESS的数据导入到Mysql中(转)
    把ACCESS的数据导入到Mysql中(转)[@more@]在建设网站的过程中,经常要处理一些数据的导入及导出.在Mysql数据库中,有两种方法来处理数据的导出(一般). 1. 使用select ...
    99+
    2024-04-02
  • MySQL数据库导入导出数据的方法
    这篇文章主要介绍“MySQL数据库导入导出数据的方法”,在日常操作中,相信很多人在MySQL数据库导入导出数据的方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MySQL数...
    99+
    2024-04-02
  • MapReduce将文本数据导入到HBase中
    整体描述:将本地文件的数据整理之后导入到hbase中在HBase中创建表数据格式MapReduce程序map程序package com.hadoop.mapreduce.test.map; im...
    99+
    2024-04-02
  • Kafka中如何将数据导入到Elasticsearch
    本篇文章为大家展示了Kafka中如何将数据导入到Elasticsearch,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Elasticsearch作为当前主流的全文检索引擎,除了强大的全文检索能力和...
    99+
    2023-06-02
  • Oracle怎么将文件数据导入到VARCHAR列中
    要将文件数据导入到VARCHAR列中,可以使用Oracle的SQLLoader工具或者外部表来实现。以下是使用SQLLoader工具...
    99+
    2024-04-09
    Oracle
  • pg从csv文件导入数据到数据库中
    前置条件  linux环境下安装的pg  csv的tar.gz包已经上传到指定路径中(linux),建议表名个文件名一致   所有表和schema已建立 正式开始    1.在csv的tar包所在路径下,解压所有...
    99+
    2020-07-13
    pg从csv文件导入数据到数据库中
  • 将数据库导入到阿里云盘中的文件
    # 随着互联网的发展,数据的重要性越来越突出,而数据库则是数据存储和管理的重要工具。本文将介绍如何将数据库中的数据导入到阿里云盘中的文件中,以方便数据的备份和共享。详细说明:在数据库中,我们可以使用各种编程语言(如Python、Java等)...
    99+
    2023-12-26
    阿里 盘中 导入到
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作