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
 

最新文章

  1. sqlite索引的原理
  2. Android打包的那些事
  3. 图解Activity与Fragment
  4. POJ 1976 A Mini Locomotive【DP】
  5. 转:三十三、Java图形化界面设计——布局管理器之null布局(空布局)——即SWT中的绝对布局
  6. Cocos2dx 中的CCCallFunc,CCCallFuncN,CCCallFuncND,CCCallFuncO比较
  7. webpack 学习心得(一)
  8. 导入 theano 失败。“cannot import name gof”
  9. 关于OMAPL138烧写程序的说明
  10. unable to apply changes:plugins &quot;App links assistant&quot;,firebase services won&#39;
  11. Best Cow Line---POJ 3617(贪心)
  12. chrome添加扩展程序
  13. oracle控制文件问题
  14. 深入理解HashMap+ConcurrentHashMap的扩容策略
  15. 手头没证书,如何给https做代理?Nginx TCP转发
  16. Collection集合总结,List和set集合的用法,HashSet和LinkedHashSetde用法
  17. QT的常用对话框的应用
  18. canvas - drawImage()方法绘制图片不显示的问题
  19. 解决 Python shell 中 Delete/Backspace 键乱码问题
  20. 『cs231n』绪论

热门文章

  1. JNI.ZC_文件(.so/.h)位置
  2. java.lang.NoSuchMethodError: org.springframework.core.io.ResourceEditor
  3. Java网络编程和NIO详解1:JAVA 中原生的 socket 通信机制
  4. UVA-11988 Broken Keyboard (a.k.a. Beiju Text) (链表 或 递归)
  5. 谈谈oracle里的join、left join、right join、full join-版本2
  6. 108. Convert Sorted Array to Binary Search Tree 109. Convert Sorted List to Binary Search Tree -- 将有序数组或有序链表转成平衡二叉排序树
  7. [转载]CentOS 6.3安装Subversion服务器
  8. 011PHP文件处理——文件处理 文件内容分页操作类
  9. springboot搭建的2种方式
  10. jacoco生成覆盖率