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

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

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

准备工作:

1、mysql数据源:myuser库中的user表(8条数据)

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

<dataConfig>
	<dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver"
		url="jdbc:mysql://localhost/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中数没有任何数据的。

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

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

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

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

xml命令:

<delete><query>*:*</query></delete>
<commit/>
时间: 2024-10-02 15:19:45

(solr系列:四)将mysql数据库中的数据导入到solr中的相关文章

如何使用免费控件将Word表格中的数据导入到Excel中

我通常使用MS Excel来存储和处理大量数据,但有时候经常会碰到一个问题—我需要的数据存储在word表格中,而不是在Excel中,这样处理起来非常麻烦,尤其是在数据比较庞大的时候, 这时我迫切地需要将word表格中的数据导入到Excel中.相信大家也碰到过同样的问题,下面我就给大家分享一下在C#中如何使用免费控件来实现这一功能.这里,我使用了两个免费API, DocX和Spire.Xls. 有需要的朋友可以下载使用.下载地址: DocX:codeplex官网 Spire.Xls: E-iceb

机房收费系统———如何将MSFlexGrid中的数据导入到Excel中

机房收费系统进行了一段时间了,虽然说大体上跟学生信息管理系统一样,不过也有不一样的地方.比如说报表.如何将MSFlexGrid中德数据导入到Excel中等等.这些东西原来没有接触过,第一次接触难免有些陌生.这些问题困扰了我好长-时间,一看到它头都大了.不过,提高班名言——不将就是发现的源动力.本着这一原则,慢慢的攻克了这些问题. 机房收费系统中好几个地方需要将MSFlexGrid中德数据导入到Excel中,这是在学生信息管理系统中没有的功能.首先,首先需要在vb里面引用我们所需要的对象:Micr

python实现自动从mysql数据库取指定数据记录到excel中-新建、追加

xlsxwriter,openpyxl,pandas 模块都可以实现往excel中写入数据,但是为了更简单方便的实现我的需求,选择将三种结合使用. #!/usr/bin/env python3 # -*-coding: utf-8 -*- # @Time:2019/12/26 16:55 # @Author: WSN import pandas as pd import pymysql, openpyxl, os, xlsxwriter # 设定excel文件名称 version = 'V1.4

c#大圣之路笔记——c#通过页面把excel中的数据导入到DB中(全部)

1 ///html 2 3 4 <html xmlns="http://www.w3.org/1999/xhtml"> 5 <head id="Head1" runat="server"> 6 <title> 批量修改</title> 7 <link href="../css/main.css" rel="stylesheet" type="t

Excel中的数据导入到SqlServer数据库中

从SqlServer2008才开始支持导出表结构的和表中的数据,而SqlServer2008以前的数据库只支持导出表结构,有些时候我们可能需要把2008以前的数据库中的数据导出来,这个时候我们可以使用折中的方法,先把数据库导出到Excel中,再把Excel中的数据导入到数据库中(如果两台数据库服务器之间可以互通的话,可以直接建立远程链接进行数据传输,不用如此麻烦), 将SqlServer中的数据导出到Excel中比较简单,这里不再贴图,下面是把Excel中的数据导入到SqlServer中步骤:

如何把Excel中的数据导入到数据库

NPOI: using NPOI.HSSF.UserModel; using NPOI.SS.Formula.Eval; using NPOI.SS.UserModel; using NPOI.XSSF.UserModel; using System; using System.Data; using System.IO; namespace ZZAS.HNYZ.GPSInstallManage.Common { public class ExcelHelper : IDisposable {

Talend 将Oracle中数据导入到hive中,根据系统时间设置hive分区字段

首先,概览下任务图: 流程是,先用tHDFSDelete将hdfs上的文件删除掉,然后将oracle中的机构表中的数据导入到HDFS中:建立hive连接->hive建表->tJava获取系统时间->tHiveLoad将hdfs上的文件导入到hive表中. 下面介绍每一个组件的设置: tHDFSDelete_1: 机构: tHDFSOutput_1: hive: tHiveCreateTable: tJava_1: tHiveLoad_1: 在Context下面建一个内容变量: 这个内容变

Python/MySQL(四、MySQL数据库操作)

Python/MySQL(四.MySQL数据库操作) 一.数据库条件语句: 1 case when id>9 then ture else false 二.三元运算: 1 if(isnull(xx)0,1) 三.上下连表: select id,name from ta1 union 天然去重(检测上边的表和下边的表行内完全一样就只显示一行内容) select num,sname from tb2 ========================================== select

使用Sqoop1.4.4将MySQL数据库表中数据导入到HDFS中

问题导读:         1.--connect参数作用? 2.使用哪个参数从控制台读取数据库访问密码? 3.Sqoop将关系型数据库表中数据导入HDFS基本参数要求及命令? 4.数据默认导入HDFS文件系统中的路径? 5.--columns参数的作用? 6.--where参数的作用? 一.部分关键参数介绍 参数介绍 --connect <jdbc-uri> 指定关系型数据库JDBC连接字符串 --connection-manager <class-name> 指定数据库使用的管