首先solr已经提供了导入的功能,但是不能实现定时导入。
然后我就在网上找到了将solr-dataimportscheduler-1.1.jar放到solr-8.2.0\server\solr-webapp\webapp\WEB-INF\lib下,并配置了dataimport.proterties配置文件,但是一直未执行,害的我一直以为是增量配置有问题,搞了半天,最后我反编译了这个包,查看了一下代码,还好,代码逻辑很简单。
就是做了一个定时器,定时访问了
这个地址而已,而dataimport.proterties中就是配置了这个地址的怎么访问的。我的如下:
interval=1
port=8983
server=localhost
params=collection3/dataimport?command\=delta-import&clean\=false&commit\=true
webapp=solr
syncEnabled=1
syncCores=
这里说一下:
syncCores这个如果只是一个的话,可以像我这样可以写在params里,否则也可能会出现定时不执行的问题
莫得办法,代码里的逻辑就是这样,如果syncCores是多个用英文逗号隔开就行例如collection1,collection2
然后我把代码放到工程下进行编译,发现这东西还需要slf4j相关的日志包,检查了一下官方的包里没有这个,自己找了过来,需要
log4j-1.2.16.jar,slf4j-api-1.7.25.jar,slf4j-log4j12-1.7.25.jar
启动的时候还需要metrics-core-3.0.2.jar这个包,不知道是用来做什么的。
然后检查代码发现如下图:
如图代码中的loader.getInstanceDir()已经又没了,并且loader需要关闭
改成如下图所示:
顺道发现这东西需要在web.xml配置后,定时器才会启动
打开solr-8.2.0\server\solr-webapp\webapp\WEB-INF\web.xml,添加如下:
<listener>
<listener-class>org.apache.solr.handler.dataimport.scheduler.ApplicationListener</listener-class>
</listener>
搞定!收工!
最后总结一下
如果在solr的页面中选择增量导入没有问题时,但是定时导入一直没有执行的话,按以下步骤进行:
1、在solr-8.2.0\server\solr-webapp\webapp\WEB-INF\lib下导入需要的包(log4j-1.2.16.jar,slf4j-api-1.7.25.jar,slf4j-log4j12-1.7.25.jar)
经过测试:metrics-core-3.0.2.jar不能放在lib下,有冲突
2、确定dataimport.proterties的位置没有放错
这个经过测试是放在solr-8.2.0\server\solr下新建一个conf文件夹,然后放入dataimport.properties
3、需要在web.xml中添加定时器启动listener
4、确定solr-dataimportscheduler是否与solr的版本对应,貌似看1.0更早了,1.1貌似是16年改的。
自己动手丰衣足食啊,祝看到这篇文章的程序员们!加油!
最后放上自己反编译后的jar包
链接: https://pan.baidu.com/s/1cgCVzT5IlSg1TabHCtfnPA 提取码: cncs
参考资料: