当前位置: 首页 > 编程日记 > 正文

Solr 4.x定时、实时增量索引 - 修改、删除和新增索引

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

一、开始增量索引前的准备工作。

1、认识data-config.xml中相关属性

   <!--  transformer 格式转化:HTMLStripTransforme表示 索引中将忽略HTML标签   ---> <!--  query:  查询数据库表符合记录数据   ---> <!--  deltaQuery:增量索引   查询主键ID    --->    注意这个query只返回ID字段 <!--  deltaImportQuery:增量索引   查询导入的数据  ---> <!--  deletedPkQuery:增量索引  删除主键ID查询  ---> 注意这个只返回ID字段 

最主要的是我们要知道这样一个事实: last_index_time是DataImportHandler的一个默认字段,(可查看conf目录下的dataimporter.properties文件)

我们可以在任何SQL中引用,该字段用于表明上次做full import或者是delta import(增量导入)的最后一次时间。

2、数据库配置注意事项

1)、如果只涉及添加与修改业务,那么数据库里只需添加一个类型为timpstamp,默认值为当前系统时间的字段 :CURRENT_TIMESTAMP(MySQL)

2)、如果还涉及删除业务,那么数据里就需额外再多添加一个字段isdelete,int类型的用0,1来标识,此条记录是否被删除,当然也可以用其他字段标识,ture或false都可以

3、dataimporter.properties / {corename}_dataimporter.properties

在C:\solr-tomcat\solr\item\conf中查看是否存在文件dataimporter.properties,如果没有,则新建该文件。

这个配置文件很重要,它是用来记录索引的最新一次修改时间的,通过该配置文件可以找出新增的、修改的或者删除的记录。相关实例:

在data-config中添加如下配置信息。

<dataConfig> <!--- 此段话配置的是一个MySQL的数据源,(数据源也可以配置在solrconfig.xml中) ---> <dataSource name="activityDB" type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost/test" user="swang6" password="swang6"/> <document> <entity pk="ID" dataSource="activityDB" name="myentity" query="select * from myentity WHERE isdelete=0" deltaQuery="select ID from myentity where my_date >'${dih.last_index_time}'" deletedPkQuery="select ID from myentity where isdelete=1" deltaImportQuery="select * from myentity where ID='${dih.delta.id}">

      <!--  ID指定大写的,与上面语句中的对应起来---->         <field column="ID" name="id"/>    <field column="name" name="name"/>    <field column="address" name="address"/>    <field column="age" name="age"/>    <field column="my_date" name="my_date"/>    <field column="isdelete" name="isdelete"/>    </entity>  

</document> </dataConfig>

<!-- pk="ID" 必须,因为其中的增量索引查询主键ID时需要 -->

       <!--  dataSource="acitvityDB" 这个引用名字是引用上面数据源的名字 -->    <!--  name="myentity" 存在多个实体时,这个名字必须唯一 -->    <!--  query:用于全量导入而非增量导入  query="select * from myentity WHERE isdelete=0    query查询是指查询出表里所有的符合条件的数据,因为笔者测试的有删除业务,所以    where后面有一个限定条件isdelete=0,意思为查询未被删除的数据      -->   <!--  deltaQuery : 用于增量导入且只返回ID  deltaQuery="select ID  from myentity where my_date >  '${dih.last_index_time}'"    deltaQuery的意思是,查询出所有经过修改的记录的ID    可能是修改操作,添加操作,删除操作产生的     -->    <!--  deletedPkQuery : 用于增量导入且只返回ID  deletedPkQuery="select ID from myentity where isdelete=1"      此操作只查询那些数据库里伪删除的数据的ID(即isdelete标识为1的数据)    solr通过它来删除索引里面对应的数据   -->   <!--  deltaImportQuery: 增量导入起作用,可以返回多个字段的值,一般情况下,都是返回所有字段的列  deltaImportQuery="select * from myentity where ID='${dih.delta.ID}'"  deltaImportQuery查询是获取以上两步的ID,然后把其全部数据获取,根据获取的数据    对索引库进行更新操作,可能是删除,添加,修改          -->  

注:如果有必要,则可以在schema.xml中添加一个timestamp的field

<field name="timestamp" type="date" indexed="true" stored="true" default="NOW" />

做了以上配置后,可以设置linux的cron job或者spring 的TaskSchuduler或者Cron Job后,可以定时发url:

http://localhost:8983/solr/dataimport?command=delta-import去做增量索引。更多关于Solr做增量索引的说明文档:http://wiki.apache.org/solr/DataImportHandler

当然也可以用Solr自带的Scheduler来做增量索引:

http://wiki.apache.org/solr/DataImportHandler#Scheduling

转载于:https://my.oschina.net/fight123/blog/677837

相关文章:

关于Blocking IO, Non-Blocking IO 和 Asynchronous I/O的理解

文章写得很详细很清楚了&#xff0c;对我的理解帮助很大。 转载自&#xff1a;http://www.cnblogs.com/whyandinside/archive/2012/03/04/2379234.html。 概括来说&#xff0c;一个IO操作可以分为两个部分&#xff1a;发出请求、结果完成。如果从发出请求到结果返回&#xff…

还在苦恼机器学习和线性回归?这篇总结拿走不谢 | 原力计划

作者 | 听星的朗瑞责编 | 王晓曼出品 | CSDN博客题图 | 东方IC什么是机器学习&#xff1f;机器学习是一种实现人工智能的方法&#xff0c;从数据中寻找规律、建立关系&#xff0c;根据建立的关系去解决问题&#xff0c;从数据中进行经验学习&#xff0c;实现自我优化与升级。维…

网页设计和用户界面设计

摘要&#xff1a;这是两个现在网页设计领域使用频率非常高的词。在大多数情况下&#xff0c;它们被相互替代。这个领域内外的很多人都认为这是两个意义基本一样的词。但是它们真的可以互相混淆么&#xff1f;这是两个现在网页设计领域使用频率非常高的词。在大多数情况下&#…

使用VisualStudio2010连接CodePlex进行代码管理

摘要&#xff1a;CodePlex是微软的开源工程网站&#xff0c;涉及诸多微软最新技术的开源工程&#xff0c;同时你也可以建立并向世界展示自己的开源工程。同SourceForge、GoogleCode相比CodePlex有其自身的优势&#xff0c;特别是对做.Net开发的朋友来说&#xff0c;由于CodePle…

计算程序运行时间(time_t, clock_t)

转载自&#xff1a;http://blog.chinaunix.net/uid-23208702-id-75182.html 计算程序运行时间&#xff08;time_t, clock_t&#xff09;-whyliyi-ChinaUnix博客 我们有时需要得到程序的运行时间&#xff0c;但我们也要知道&#xff0c;根本不可能精确测量某一个程序运行的确切…

又一年5.20,用Python助力程序员脱单大攻略(视频版)

作者 | 写代码的明哥来源 | Python编程时光&#xff08;ID: Cool-Python&#xff09;情人节年年有&#xff0c;但今年的 5.20 要比以往的更有意义。2020.05.20 &#xff0c;爱你爱你我爱你&#xff0c;如果再卡个时间&#xff08;13:14&#xff09;&#xff0c;那就是 爱你爱你…

pthred()多线程计算派

实验一&#xff1a;计算π问题描述实验提供了两种计算方法&#xff0c;一种使用积分方法&#xff0c;另一种采用随机数方法。本报告中采用积分方法。计算公式&#xff1a;程序流程图&#xff1a;(图1)函数流程图(图2)一组实验数据&#xff0c;计算规模&#xff1a;500,000,000性…

使用最小堆优化Dijkstra算法

OJ5.2很简单&#xff0c;使用priority_queue实现了最小堆竟然都过了OJ……每次遇到relax的问题时都简单粗暴地重新push进一个节点…… 然而正确的实现应该是下面这样的吧&#xff0c;关键在于swap堆中元素时使用pos数组存储改变位置后的编号为k的节点对应在堆中的位置。下面这种…

C语言编程技巧-signal(信号机制)

http://blog.sina.com.cn/s/blog_6a1837e90100v1vc.html

第一课:网络参考模型OSI

网络参考模型OSI(一)&#xff1a;模型提出目的&#xff1a;开放系统互连。使各个厂商的设备可以很好的互连、互通、互操作。(二)&#xff1a;各层功能(1):物理层&#xff1a;负责链路上bit流的传输。&#xff08;bit流显著的特点是&#xff0c;不支持格式或者结构&#xff09;。…

在线直播 | 是事实还是贩卖焦虑?IT行业也偏爱“小鲜肉”​

几年前曾看过这样一篇报道&#xff1a;Java 之父求职被嫌年纪大&#xff0c;硅谷公司现在喜欢“小鲜肉”&#xff0c;不爱“老古董”。Java之父 James Gosling 在 Facebook 上发表了他所遭遇的年龄歧视&#xff1a;我曾在面试的时候被 HR 告知&#xff0c;“通常我们不招你这种…

eclipse 代码中突然出现特殊字符

在写代码的时候&#xff0c;不知道点到了 eclipse 的哪个属性&#xff0c;代码中就出现了一些特殊字符&#xff0c;也不能删除。 请问&#xff0c;在 eclipse 中该怎么设置&#xff0c;才能将这些字符去掉。 如下图所示&#xff1a; 解决方法: 选择Window->Preferences->…

如何优化数据中心虚拟机布局

当前已经有很多组织将服务器虚拟化技术引入到生产中&#xff0c;这么做是有道理的&#xff0c;特别是在当前经济并不景气的情况下&#xff0c;因为服务器虚拟化技术可以在服务器硬件&#xff0c;机架空间&#xff0c;电力消耗和制冷方面为组织节省开支。   但为了实现服务器虚…

回归——同步更新github.io

回归 已经有好长时间没写博客了&#xff0c;可能我比较懒&#xff0c;不太乐于分享&#xff0c;我觉得这个是一个很不好的习惯。但我坚信&#xff1a;Sharing changes the world! 最近搭建了自己的个人独立博客&#xff0c;基于Github Pages的&#xff0c;所以打算以后同步更…

支持量子机器学习,王海峰发布最新百度飞桨全景图

出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;刚刚&#xff0c;WAVE SUMMIT 2020深度学习开发者峰会上&#xff0c;百度CTO王海峰开场即披露了一组飞桨数据&#xff1a;飞桨累计开发者数量已超过190万&#xff0c;服务企业数量达8.4万家&#xff0c;发布模型数量已…

NPOI读写Excel

1、整个Excel表格叫做工作表&#xff1a;WorkBook&#xff08;工作薄&#xff09;&#xff0c;包含的叫页&#xff08;工作表&#xff09;&#xff1a;Sheet&#xff1b;行&#xff1a;Row&#xff1b;单元格Cell。 2、NPOI是POI的C#版本&#xff0c;NPOI的行和列的index都是从…

我的vim捣鼓之路

2016-06-13 更新 绑定独立博客到域名rebootcat.com 2016-06-12 更新文中的几个链接错误&#xff0c;google search报错 前言 从大二的时候就开始接触Linux了&#xff0c;从而也接触了vi,对的&#xff0c;当时对这些还不太了解&#xff0c;不知道还有个vim&#xff0c;真的觉得…

代码写对了还挂了?程序媛小姐姐从 LRU Cache 带你看面试的本质

来源 | 码农田小齐责编 | Carol 前言在讲这道题之前&#xff0c;我想先聊聊「技术面试究竟是在考什么」这个问题。技术面试究竟在考什么在人人都知道刷题的今天&#xff0c;面试官也都知道大家会刷题准备面试&#xff0c;代码大家都会写&#xff0c;那面试为什么还在考这些题&…

广船国际股份有限公司OA项目

2003年的老案例&#xff1a; 背景 广船国际股份有限公司是由原中国船舶工业总公司属下国有企业广州造船厂在1993年改组、在上海和香港同期上市的股份有限公司&#xff0c;公司享有自营进出口权。 广船国际于2002年3月通过评标后选定采用iOffice.net信息管理平台作为信息化建设…

注册表----修改Win7登录界面

在进行操作前&#xff0c;需要准备好背景图片。对背景图片的要求有三点&#xff1a; &#xff08;1&#xff09;图片必须是JPG格式&#xff1b; &#xff08;2&#xff09;必须将图片命名为backgroundDefault; &#xff08;3&#xff09;图片的体积必须小于256KB。 按下【WinR】…

定义自己的rm command

rm 是一个很危险的命令&#xff0c;别人一直说&#xff0c;我并没有在意&#xff0c;直到有一天一个不小心&#xff0c;忘记当前目录的位置&#xff0c;手贱的使用了rm命令&#xff0c;结果花了半天也没有把那些重要资料给恢复过来。所以还是有必要给自己定义一个不那么危险的r…

出任 Twitter 独立董事,AI 女神李飞飞的传奇人生

作者 | 年素清责编 | 伍杏玲出品 | 程序人生&#xff08;ID&#xff1a;coder_life&#xff09; 近日&#xff0c;Twitter宣布任命斯坦福大学计算机科学教授、前谷歌副总裁李飞飞为董事会独立董事。李飞飞本人表示&#xff1a;“推特是科技连接世界的一个重要平台&#xff0c;…

apache ab压力测试

2019独角兽企业重金招聘Python工程师标准>>> ab的原理&#xff1a;ab命令会创建多个并发访问线程&#xff0c;模拟多个访问者同时对摸一个URL地址进行访问。它的测试目标是基于URL的&#xff0c;因此它既可以用来测试apache的负载压力&#xff0c;也可以测试nginx、…

我的个人博客搭建记录

6/13更新 绑定个人博客到域名 rebootcat.com 前言 本篇博客旨在备忘&#xff0c;并记录了自己折腾了3,4天后顺利搭建自己的个人博客过程中碰到的一部分问题。 搭建个人独立博客有很多种方法&#xff0c;我暂时采用的是基于github Pages的免费博客&#xff0c;博客框架采用he…

oracle中创建触发器

从csdn上面看到一个如何创建触发器的问题&#xff0c;感觉自己很有必要保存学习&#xff0c;特写下来&#xff1a;条件&#xff1a;现有A、B两张表A&#xff1a; 工号 姓名 密码 性别 年龄 。。。B&#xff1a; 工号 姓名 密码当对A表中的“密码”字段进行修改时,B表中的“密码…

量子计算与AI“双拳”出击,他们锁定38种潜在抗疫药物

作者 | Just出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;医药研发行业有一个“三个十”的说法&#xff0c;即一种药物的发现需要投入十年以上的时间&#xff0c;花费十多亿美元&#xff0c;最后获得10%的成功率。也就是说&#xff0c;医药研发需要花费很长时间&am…

Android官方开发文档Training系列课程中文版:OpenGL绘图之应用投影与相机视图

原文地址&#xff1a;http://android.xsoftlab.net/training/graphics/opengl/projection.html##transform 在OpenGL ES环境中&#xff0c;投影相机View可以将所绘制的图形模拟成现实中所看到的物理性状。这种物理模拟是通过改变对象的数字坐标实现的&#xff1a; 投影 - 这基于…

Python分析101位《创造营2020》小姐姐,谁才是你心中的颜值担当?

来源 | CDA 数据分析师责编 | Carol Show me data&#xff0c;用数据说话。今天我们聊一聊《创造营2020》各个小姐姐&#xff0c;点击下方视频&#xff0c;先睹为快&#xff1a; 最近可以追的综艺真是太多了&#xff0c;特别是女团选秀节目。之前我们刚聊过《青春有你2》&…

体验Remix——安卓电脑

第一次听说Android-X86 以前玩唱吧的时候接触过PC上的安卓模拟器&#xff0c;不过这个只是一个软件&#xff0c;效果毕竟不好&#xff0c;想要把电脑变成安卓手机&#xff0c;还差远了。 然后&#xff0c;前段时间一直纠结要不要换个手机&#xff0c;我现在的华为小6已经跟我…

重置 microsoft visual studio窗口

“工具”->“导入导出设置”—>“重置所有设置”&#xff0c;在这个向导中可以重置编译环境的&#xff01;转载于:https://www.cnblogs.com/qiantuwuliang/archive/2011/05/31/2064825.html