当数据库的数据发生改变的时候,我们不想手动的去重新添加数据库的数据导solr索引库中,所以用到定时添加索引。增删改的数据。现在写的这些都是基于我之前做的一步步到这来的。

将solr/dist下的solr-dataimporthandler-4.8.1.jar、solr-dataimporthandler-extras-4.8.1.jar这两个包拷贝到tomcat/webapps/solr/lib下,还有下载apache-solr-dataimportscheduler.jar也拷贝到tomcat/webapps/solr/lib下,下载链接apache-solr-dataimportscheduler.jar的下载链接。

修改solr\home\mycore\conf下的data-config.xml文件。

<dataConfig>
<dataSource type="JdbcDataSource"
driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/courseman"
user="root"
password="mysql" />
<document> <entity pk="ID" dataSource="courseman" name="student" query="select * from student WHERE deleteStatus=0 "
deltaQuery="select ID from student where createTime > '${dataimporter.last_index_time}'"
deletedPkQuery="select ID from student where deleteStatus=1"
deltaImportQuery="select * from student where ID='${dataimporter.delta.ID}'" > <field column="ID" name="id" />
<field column="name" name="name" />
<field column="gender" name="gender" />
<field column="major" name="major" />
<field column="grade" name="grade" />
<field column="deleteStatus" name="deleteStatus" />
<field column="createTime" name="createTime" />
<field column="updateTime" name="updateTime" /> </entity>
</document>
</dataConfig>
  1. query查询是指查询出表里所有的符合条件的数据,因为我的数据库student表中的数据是根据deleteStatus来查询的。类型是boolean。这来要查询的所有符合条件的结果根据实际情况定。也可以是int类型的。是第一次查询的数据,或者是full-import的数据。
  2. deltaQuery的意思是,查询出所有经过修改的记录的ID,可能是修改,添加,删除等操作产生的  (这里查询只对增量导入起作用,即查询的是新增的数据,而且只能返回ID值) 。
  3. deletedPkQuery查询那些数据库里伪删除的数据的ID。这里deleteStatus=1,删除状态为1,表示删除的数据。创建索引的时候不会将这些数据添加进来。
  4. deltaImportQuery该查询是获取以上两步的ID,然后把其全部数据获取,根据获取的数据   对索引库进行更新操作,可能是删除,添加,修改 (该查询只对增量导入起作用,可以返回多个字段的值,一般情况下,都是返回所有字段的列) ,即通过2、3步的查询结果,进行匹配.

假如deltaQuery满足条件有5条数据,deletedPkQuery满足条件有3条数据,那么这5条数据就会被更新进来,这3条数据呢就会被删除掉,原有的数据还存在。是根据原有的数据更新的。具体是怎么样的还有待研究。

在tomcat\webapps\solr\WEB-INF\web.xml加入这句话:

<listener>
<listener-class>org.apache.solr.handler.dataimport.scheduler.ApplicationListener</listener-class>
</listener>

这个class是在apache-solr-dataimportscheduler.jar包下的。

在solr\home文件下创建conf文件夹,原本是没有的,要自己创建。不是solr\home\mycore\conf。启动tomcat的时候他会去找solr目录下home\conf。如果没有找到,启动报错,访问不到路径,报404错。

他是根据这个配置的。

<?xml version="1.0" encoding="utf-8"?>

<Context docBase="D:\work-tool\server\solr\server\solr-4.8.1.war" reloadable="true" >

      <Environment name="solr/home" type="java.lang.String" value="D:\work-tool\server\solr\home" override="true" />

</Context>
D:\work-tool\server\solr\home\conf\dataimport.properties

在这个conf文件下创建dataimport.properties并添加内容

interval=1
port=8983
server=localhost
params=/dataimport?command=delta-import&clean=false&commit=true
webapp=solr
reBuildIndexInterval=1
syncEnabled=1
reBuildIndexBeginTime=03:10:00
reBuildIndexParams=/dataimport?command=full-import&clean=true&commit=true
syncCores=mycore

interval:

port:solr的端口

server:solr的路径

webapp:solr名称

syncCores:索引库位置,可以多个,用逗号隔开。

apache-solr-dataimportscheduler的源代码里面有个错误,应该把POST请求改为GET请求。不然他会报415错误。

solr定时增量索引的更多相关文章

  1. solr与.net系列课程(六)solr定时增量索引与安全

     solr与.net系列课程(六)solr定时增量索引与安全 solr增量索引的方式,就是一个Http请求,但是这样的请求显然不能满足要求,我们需要的是一个自动的增量索引,solr官方提供了一个定时器 ...

  2. solr之定时增量索引实现

    solr本身就提供了一个工具库实现定时增量索引,但是我在使用的过程中发现会出现一些问题,目前遇到两点: 1.启动时总是报如下异常: ? 1 The web application [solr] reg ...

  3. solr-DIH:定时增量索引

    参考:官方文档,http://wiki.apache.org/solr/DataImportHandler#Scheduling googlecode 找到:https://code.google.c ...

  4. Solr定时更新

    今天用到solr定时重建索引和增量更新技术,就从网上搜了一些资料,在这里给大家整理了一下,也经过了自己的测试,没有异常. Solr官方提供了很强大的Data Import Request Handle ...

  5. 四、Solr数据源配置(JNDI、DIH)及定时重做索引

    简介 Solr支持很多种创建索引的方式,包括网页,xml以及数据库,因为我这边做的是企业级的搜索,所以用的是数据库建立索引.其实从数据库建立索引,很大程度上取决于原来的数据库设计. 从数据库建立索引, ...

  6. 用solr DIH 实现mysql 数据定时,增量同步到solr

    基础环境: (二)设置增量导入为定时执行的任务: 很多人利用Windows计划任务,或者Linux的Cron来定期访问增量导入的连接来完成定时增量导入的功能,这其实也是可以的,而且应该没什么问题. 但 ...

  7. [Solr] (源) Solr与MongoDB集成,实时增量索引

    一. 概述 大量的数据存储在MongoDB上,需要快速搜索出目标内容,于是搭建Solr服务. 另外一点,用Solr索引数据后,可以把数据用在不同的项目当中,直接向Solr服务发送请求,返回xml.js ...

  8. Solr与MongoDB集成,实时增量索引

    Solr与MongoDB集成,实时增量索引 一. 概述 大量的数据存储在MongoDB上,需要快速搜索出目标内容,于是搭建Solr服务. 另外一点,用Solr索引数据后,可以把数据用在不同的项目当中, ...

  9. solr定时更新索引遇到的问题(SolrDataImportProperties Error loading DataImportScheduler properties java.lang.NullPointerException)

    问题描述 报如下错误,很显然,问题原因:空指针异常: ERROR (localhost-startStop-1) [   ] o.a.s.h.d.s.SolrDataImportProperties ...

随机推荐

  1. 添加JSTL 1.2 依赖库

    添加JSTL 1.2 依赖库 JSTL 是一项很有历史的技术,而且版本自Java 5以来长期停留在1.2.但在做简单演示的页面时jstl依然有用,当前我们依然能看到这项技术(在博客.文档的demo里很 ...

  2. Chrome 开发者工具的使用

    Console 那里是可以调节上下文的,不同的文档上下文互相隔离,默认是top,也就是当前打开的页面.这个功能在页面包含 iframe 或者开发插件的时候才用得到. 早期版本的 Resource 已经 ...

  3. [SQL基础教程] 3-1 对表进行聚合查询

    [SQL基础教程] 3-1 对表进行聚合查询 聚合函数 用于合计的函数称为聚合函数或者集合函数 COUNT SUM AVG MAX MIN SELECT COUNT(*) FROM table; SE ...

  4. C#+ArcEngine中com对象的释放问题

    1.问题描述 最近在写C#下AE的开发,在循环获取数据并修改时碰到了两个问题"超出系统资源"和"超出打开游标最大数":在网上看了一些资料,发现都是说在循环中没有 ...

  5. js中style的属性

    下面这些属性都是通过js的style来设置css.只是整理了一部分,详细的可以参考相应的学习网站,不好的地方欢迎大家拍砖. alignContent :"" 属性在弹性容器内的各项 ...

  6. iOS摇一摇功能、震动功能、简单的摇动动画、生成二维码图片与发送短信等几个功能

    有一个开锁的功能,具体的需求就类似于微信的"摇一摇"功能:摇动手机,手机震动,手机上的锁的图片摇动一下,然后发送开锁指令.需求简单,但用到了许多方面的知识. 1.摇一摇 相对这是最 ...

  7. Pthon修炼5

    函数    一.自定义函数 def:表示函数的关键字 函数名:函数的名称 函数体:函数中进行一系列的逻辑计算 参数:为函数体提供数据 返回值:执行完函数return 一个值 例:def count(x ...

  8. C语言学习 数独游戏

    摘要:花了1周多时间学习了C语言,开始练手写解数独游戏的程序. C语言学习 数独游戏 作者:乌龙哈里 时间:2015-11-22 平台:Window7 64bit,TCC 0.9.26(x86-64 ...

  9. Asp.Net MVC2.0 Url 路由入门---实例篇

    本篇主要讲述Routing组件的作用,以及举几个实例来学习Asp.Net MVC2.0 Url路由技术. 接着上一篇开始讲,我们在Global.asax中注册一条路由后,我们的请求是怎么转到相应的Vi ...

  10. Salesforce apex标签的有关内容

    局部刷新标签: apex:actionSupport event="onchange" action="{!changeSelect}" rerender=&q ...