sorl 6.6.0 定时更新索引
solr 定时更新索引
– solr 6.6.0
– dataimport.scheduler
这里先重点说下,定时更新引用的org.apache.solr.handler.dataimport.scheduler.ApplicationListener不是sorl源码自带的,需要另外去下载,下载地址为:dataimport.scheduler,因为源码年久没人维护,所以并不兼容现有版本,需要做稍微的修改。
一、打开WEB-INF下的web.xml文件,在 <servlet>前添加下面的配置,配置定时更新计划
<listener>
<listener-class>org.apache.solr.handler.dataimport.scheduler.ApplicationListener</listener-class>
</listener>
- 1
- 2
- 3
二、 打开solr对应的core下conf目录的data-config.xml文件,配置增量更新索引。
具体官网地址:delta-import。
这里说下其中比较重要的参数:
deletedPkQuery:是指增量更新的时候,要删除的document,查询只需要返回一个document的id即可,例如:Select id From Table Where Deleted=1
deltaQuery:同上,返回了修改或添加的document。solr会自己判断是否需要添加或修改document,依据是managed-schema文件里面配置的uniquekey,如果有相同的,那就替换旧的,不存在则添加。这里的返回结果会排除掉上面deletedPkQuery的id。另外,如果uniquekey 的field定义类型为整形的要注意下,千万不要用pint(6.6.0下定义的)这个类型,增量更新的时候会出现莫名其妙的问题,我搞了好久才发现这个uniquekey定义的是pint,改成int后就正常了。例子:`Select id From Table Where Updated=1 And UpdateAt>'${dih.last_index_time}'
deltaImportQuery:这个配置是增量更新的重点所在,它直接返回增量更新的数据(根据deletedPkQuery和deltaQuery返回的id),例子:Select * From DocumentTable Where ${dih.delta.id},
这里说下${dih.last_index_time},这个变量是core下的conf目录的dataimport.properties,上面记录了索引最近更新的时候,在执行查询的时候,solr会自动替换成配置文件里面记录的时间,${dih.delta.id}是deltaQuery里面返回的字段,这里是id,也可以是其他名字,如
deltaQuery="SELECT StudentID FROM Student Where Updated=1 And [UpdateTime] > '${dih.last_index_time}'"
deltaImportQuery="SELECT * FROM Student Where StudentID=${dih.delta.StudentID}"
- 1
- 2
sorl 6.6.0 定时更新索引的更多相关文章
- Solr5.0.0定时更新索引
由于通过配置的方式定时更新不生效,故通过代码执行定时任务更新 package com.thinkgem.jeesite.modules.meeting.task; import java.io.IOE ...
- 在Linux环境下,将Solr部署到tomcat7中,导入Mysql数据库数据, 定时更新索引
什么是solr solr是基于Lucene的全文搜索服务器,对Lucene进行了扩展优化. 准备工作 首先,去下载以下软件包: JDK8:jdk-8u60-linux-x64.tar.gz TOMCA ...
- 屏幕监视专家 v1.0 定时录制屏幕动画发送到指定邮箱
ScreenWatcher v1.0功能:定时录制屏幕动画发送到指定邮箱,录制的动画为gif,可指定录制多长时间.指定几点直接开始录制,完全后台运行.作者:Bluefish 下载链接: http:// ...
- solr定时更新索引遇到的问题(SolrDataImportProperties Error loading DataImportScheduler properties java.lang.NullPointerException)
问题描述 报如下错误,很显然,问题原因:空指针异常: ERROR (localhost-startStop-1) [ ] o.a.s.h.d.s.SolrDataImportProperties ...
- mysql8.0 定时创建分区表记录 每天定时创建下一天的分区表
因单表数据太大, 需要表按时间分区 分区字段 pay_out_date 按天分 要求自动创建 1. 创建分区表 MYSQL的分区字段,必须包含在主键字段内 常见错误提示 错误提示:#1503 A PR ...
- Quartz 定时任务管理
前言 将项目中的所有定时任务都统一管理吧,使用 quartz 定时任务 设计思路 使用 quartz 的相关jar 包,懒得去升级了,我使用的是 quart 1.6 写一个定时任务管理类 用一张数据库 ...
- jquery 触屏滑动+定时滚动
<!doctype html> <html> <head> <meta charset="utf-8"> <meta name ...
- (转)Linux 定时关机、休眠命令
立刻关机:sudo haltsudo init 0 sudo shutdown -h nowsudo shutdown -h 0....定时/延时关机:sudo shutdown -h 19:3019 ...
- asp.net基于windows服务实现定时发送邮件的方法
本文实例讲述了asp.net基于windows服务实现定时发送邮件的方法.分享给大家供大家参考,具体如下: //定义组件 private System.Timers.Timer time; publi ...
随机推荐
- 读underscore
最近在拜读只有1700行(含注释)代码的Underscore.js 1.9.1,记录一些东西 (参考https://underscorejs.org/underscore.js,https://git ...
- 唯一索引 && 主键索引
唯一索引唯一索引不允许两行具有相同的索引值. 如果现有数据中存在重复的键值,则大多数数据库都不允许将新创建的唯一索引与表一起保存. 当新数据将使表中的键值重复时,数据库也拒绝接受此数据.例如,如果在 ...
- Xcode6中手动添加Precompile Prefix Header
Xcode5中创建一个工程的时候,系统会自动创建一个以以工程名为名字的pch(Precompile Prefix Header)文件,开发的过程中可以将广泛使用的头文件以及宏包含在该文件下,编译器就会 ...
- canvas实现的时钟效果
最近在网上看到了一个css3实现的可爱时钟,觉得很nice,然后就想着用canvas试试实现这个时钟效果. 首先,要实现时钟需要先计算时钟上的数字应该占整个圆的大小. 因为一个圆是360度,所以数字之 ...
- Java虚拟机体系结构分析
下图是JAVA虚拟机的结构图: 每个Java虚拟机都有一个类装载子系统,它根据给定的全限定名来装入类型(类或接口).同样,每个Java虚拟机都有一个执行引擎,它负责执行那些包含在被装载类的方法中的指令 ...
- iOS多线程GCD详解
在这之前,一直有个疑问就是:gcd的系统管理多线程的概念,如果你看到gcd管理多线程你肯定也有这样的疑问,就是:并发队列怎么回事,即是队列(先进先出)怎么会并发,本人郁闷了好久,才发现其实cgd管理多 ...
- rxjava 调用retrofit执行网络请求的过程
retrofit流程图 -1.RxJava调用Retrofit,从requestGtPushSaeUserInfo()中获得被观察者observable,然后new一个观察者向它订阅 0.从业务中 ...
- 『转』谷歌发布Windows版Chrome App Launcher
据国外媒体报道,谷歌发布了Windows版Chrome App Launcher,Windows用户现在因此能够使用谷歌的许多网络应用,如Chrome浏览器.Gmail.Google Drive和Ch ...
- DataReader使用
一.DataReader含义 DataReader相比于DataSet,DataReader是一个抽象类,所以不能用DataReader DR = new DataReader(),来构造函数创建对象 ...
- asp.net textbox等服务器控件包含html代码的时候,提交会报错
asp.net textbox等服务器控件包含html代码的时候,提交会报错,页面中的其他按钮点击的时候也会报错误, 解决方法: Page里加上这个属性 ValidateRequest=" ...