关闭

Solr之Mysql数据库全量、增量同步-yellowcong

标签: solr
345人阅读 评论(0) 收藏 举报
分类:

Solr和数据库进行数据的同步,1、配置solrconfig.xml,2、配置data-config.xml,3.配置数据库(创建表和添加远程访问权限),4.配置schema.xml,5、添加jar包,6.系统时间和mysql时间同步,这样dataimport.properties 记录的更新索引时间和数据库时间一致,才能实现增量更新, date -s “2017-04-14 12:12:00”

1 修改solrconfig.xml


#修改solrconfig.xml 配置文件
/usr/local/solr/solr-4.10.3/example/solr/collection1/conf/solrconfig.xml

#添加如下配置 增加resultHandler配置 
<requestHandler name="/dataimport"  class="org.apache.solr.handler.dataimport.DataImportHandler">        
        <lst name="defaults">        
            <str name="config">data-config.xml</str>        
        </lst>        
</requestHandler>  

修改solrconfig.xml 文件
这里写图片描述
添加如下配置
这里写图片描述

2 创建data-config.xml

在solrconfig.xml的同级目录下创建data-config.xml文件,配置数据库连接和Solr与mysql数据的对应关系和查询语句。

a 创建测试数据

使用的是Mysql测试的,我的oracle完犊子了

-- 开启远程访问
GRANT ALL PRIVILEGES ON *.*TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;

-- 开启远程访问
GRANT ALL PRIVILEGES ON *.*TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;

-- 创建数据库
DROP DATABASE IF EXISTS solr;
CREATE DATABASE solr;

USE solr;
-- 如果存在就删除表
DROP TABLE IF EXISTS common_passage;

-- 创建表
CREATE TABLE common_passage(
    id INT PRIMARY KEY AUTO_INCREMENT  COMMENT '主键',
    author VARCHAR(32) COMMENT '作者',
    title VARCHAR(64)   COMMENT '标题',
    content TEXT NOT NULL COMMENT  '文章内容',
    add_date TIMESTAMP   COMMENT '添加日期'
);

-- mysql 的日期是一个函数-- 尴尬了
-- select  SYSDATE() from DUAL
-- 插入数据
INSERT INTO common_passage VALUES(NULL,'张三','Java','Java是xx',SYSDATE());
INSERT INTO common_passage VALUES(NULL,'李四','Oracle','关系型数据库',SYSDATE());
INSERT INTO common_passage VALUES(NULL,'王五','Mysql','老子也是关系型 数据库',SYSDATE());
INSERT INTO common_passage VALUES(NULL,'赵六','Solr','基于Lucene的搜索引擎',SYSDATE());

b 配置data-config.xml

我这个地方是我的数据库配置,你最好看好自己的数据库配置地址,以及用户名及密码等,${dataimporter.request.id} 这个用来获取传递过来的查询参数,id是变化的,但是dataimporter.request是固定的

deltaImportQuery 是在增量导入的时候调用
deltaQuery 增量导入的时候,先查询满足增量条件的数据,然后,执行deltaImportQuery 的sql,导入数据

<dataConfig> 
    <dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver"     
    url="jdbc:mysql://10.0.7.113/solr" user="root" password="root"/> 
        <document> 
        <!-- ${dataimport.request.id}中dataimport,是solrconfig.xml配置的名称--> 
        <entity name="common_passage"  transformer="DateFormatTransformer"  
            query="SELECT id,author,title,content,add_date FROM common_passage a WHERE a.id >= ${dataimporter.request.id}"
            deltaImportQuery="SELECT id,author,title,content,add_date FROM common_passage a WHERE a.id = ${dih.delta.id}"  
            deltaQuery="SELECT id FROM common_passage where add_date > '${dataimporter.last_index_time}'">
      <!--查询的数据和数据库索引意义对应
                    column 是查询的字段
        name 是solr索引对应的字段
        --> 
        <field column="id" name="id"/> 
        <field column="author" name="author"/> 
        <field column="title" name="title"/> 
        <field column="content" name="content"/> 
        <field column="add_date" name="add_date" dateTimeFormat="yyyy-MM-dd HH:mm:ss"/> 
        </entity> 
    </document> 
</dataConfig>

这里写图片描述

c 配置schema.xml 文件

我们的entity的索引字段,需要在schema.xml文件中配置,有些字段是存在的,不用配置,有些没有,就需要自己配置了。

<field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" />
<field name="title" type="text_general" indexed="true" stored="true" multiValued="true"/>
<field name="author" type="text_general" indexed="true" stored="true"/>
<field name="content" type="text_general" indexed="false" stored="true" multiValued="true"/>
<field name="add_date" type="date" indexed="true" stored="true"/>

这里写图片描述

3 jar包的导入

拷贝solr-dataimporthandler-4.10.3.jar,solr-dataimporthandler-extras-4.10.3.jar,两个jar包到tomcat的solr的lib目录下

拷贝Mysql驱动,看你的数据库的驱动,根据你自己的驱动来弄

#拷贝solr驱动
cp solr-dataimporthandler-4.10.3.jar /usr/local/solr/apache-tomcat-7.0.62/webapps/solr/WEB-INF/lib/

cp solr-dataimporthandler-extras-4.10.3.jar /usr/local/solr/apache-tomcat-7.0.62/webapps/solr/WEB-INF/lib/

#拷贝Mysql驱动, 直接下载到lib目录
wget http://central.maven.org/maven2/mysql/mysql-connector-java/5.1.21/mysql-connector-java-5.1.21.jar

这里写图片描述

拷贝到目标目录
这里写图片描述

导入数据

添加成功后,导入的配置有数据了

这里写图片描述

导入的方式(Full Import/全部导入, delta import 增量同步)

这里写图片描述

全量

一次将所有的数据都导入
这里写图片描述

同步的结果
这里写图片描述

通过url的方式来同步,而非管控台方式
这里写图片描述

--直接在浏览器里面,发送get请求
http://192.168.66.100:8080/solr/collection1/dataimport?command=full-import&clean=true&commit=true&wt=json&indent=true&verbose=false&optimize=false&debug=false&id=0
参数 物理意义
command full-import(全量)/delta-import(增量)
clean 是否清空数据
commit 是否提交
wt 返回数据格式
indent 返回的结果是否缩进
verbose 表示你想要得到一些关于中间步骤的信息
optimize optimize操作可以优化查询性能,但是消耗资源多
debug debug模式
id 这个地方的数据是自定义的参数



下面是请求返回结果
这里写图片描述

增量同步

逐渐增加索引的量。需要结合deltaImportQuery,和deltaQuery 两个查询,(这种增量的方式,需要在设计表的时候,添加一个字段,来记录最后更新的时间)
1、deltaQuery 查询出满足增量条件的id
2、deltaImportQuery导入满足条件id的数据

这里写图片描述

请求结果

http://192.168.66.100:8080/solr/collection1/dataimport?command=delta-import&commit=true&wt=json&indent=true&verbose=false&clean=false&optimize=false&debug=false

请求详细

这里写图片描述

dataimport.properties

这个文件记录最后导入数据的时间,${dataimporter.last_index_time}调用的就是这个配置文件里面的时间

这里写图片描述

Tomcat的常用

#关闭tomcat
/usr/local/solr/apache-tomcat-7.0.62/bin/shutdown.sh

#开启tomcat
/usr/local/solr/apache-tomcat-7.0.62/bin/startup.sh

#查看启动情况
tail -f -n 100 /usr/local/solr/apache-tomcat-7.0.62/logs/catalina.2017-12-04.log

#查看启动情况
jps

参考文献

http://blog.csdn.net/yuwenruli/article/details/8442815
http://blog.csdn.net/jiangjun0130/article/details/50914338
http://blog.csdn.net/a__java___a/article/details/22688243
http://www.jianshu.com/p/c0b06643a467

0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

Solr 5,5从Mysql全量、增量导入数据

1) 将mysql-connector-java-5.1.26.jar放进solr-5.5.0/dist 2)solr-5.5.0/server/solr/core1/conf/solrconfig...
  • sundongsdu
  • sundongsdu
  • 2016-05-17 14:55
  • 2948

solr全量导入/增量导入mysql的数据

原帖链接:http://iamyida.iteye.com/blog/2210621 一、预备工作 本机没有msyql服务先yum装下 yum list installed | grep mysql...
  • johnny880730
  • johnny880730
  • 2015-12-30 15:45
  • 2291

solr6.0 -MySQL定时增量、全量更新索引

上一篇里面有增量更新索引 执行完就可以看到D:\search\solr\home\ask\conf下自动生成了一个dataimport.properties文件,里面是最后更新索引时间,就是根据这个...
  • fanFEIyang
  • fanFEIyang
  • 2016-08-24 17:51
  • 4034

solr5.5配置定时全量、增量同步索引mysql数据

上篇文章中讲了如何下载solr、安装solr、启动、增加中文分词器、简单查询等传送门,这篇文章我们来配置solr定时全量和增量同步mysql数据。 1、先看数据库表 2、打开E:\solrHo...
  • white_ice
  • white_ice
  • 6天前 18:15
  • 15

Solr-6.5.1从mysql数据库增量导入数据

第一步:修改solrconfig.xml 720行左右 db-data-config.xml </lst
  • qq_28988969
  • qq_28988969
  • 2017-07-21 17:33
  • 167

MySQL数据库之全量+增量+二进制日志的备份与恢复

一、简介数据的备份与恢复1、为什么备份? 灾难恢复:人为错误、硬件故障(冗余)、软件故障(bug)、自然灾害、黑客攻击、误操作、…; 测试; 2、备份时应该注意些什么? 能容忍最多丢失多少数据; 恢复...
  • zhangym199312
  • zhangym199312
  • 2017-11-14 15:53
  • 763

solr配置dataimport步骤 增量 全量同步配置

http://blog.csdn.net/u010367582/article/details/54095343
  • Truong
  • Truong
  • 2017-07-25 14:47
  • 391

MySQL数据库备份还原(基于binlog的增量备份)

1 简介     1.1 增量备份简介         增量备份是指在一次全备份或上一次增量备份后,以后每次的备份只需备份与前一次相比增加或者被修改的文件。这就意味着,第一次增量备份的对象是进行全...
  • qq_39781497
  • qq_39781497
  • 2017-08-09 01:43
  • 103

MySQL数据库备份还原(基于binlog的增量备份)

1 简介 1.1 增量备份简介 增量备份是指在一次全备份或上一次增量备份后,以后每次的备份只需备份与前一次相比增加或者被修改的文件。这就意味着,第一次增量备份的对象是进行全备后...
  • JesseYoung
  • JesseYoung
  • 2014-07-05 22:34
  • 7113

阿里巴巴开源项目: 基于mysql数据库binlog的增量订阅&消费

http://agapple.iteye.com/blog/1796633 背景    早期,阿里巴巴B2B公司因为存在杭州和美国双机房部署,存在跨机房同步的业务需求。不过早期的数据库...
  • xj626852095
  • xj626852095
  • 2017-04-01 13:54
  • 896
    联系方式

    联系电话:18604600631
    QQ:717350389
    点击这里给我发消息
    个人资料
    • 访问:90522次
    • 积分:5075
    • 等级:
    • 排名:第6554名
    • 原创:422篇
    • 转载:13篇
    • 译文:0篇
    • 评论:26条
    博客专栏
    最新评论