换到一个新项目,为了与原来做的solr5.5.2区分开,于是来升级了一个版本,导致增量更新又出问题,折腾一下午,终于搞定了。
第一步:从官网下载solr以后,将对应的solr-dataimporthandler-6.3.0.jar
与solr-dataimporthandler-extras-6.3.0.jar
放到solr-6.3.0\server\solr-webapp\webapp\WEB-INF\lib
目录下。
第二步:将dataimport.properties
放在solr-6.3.0\server\solr\conf
路径下。
第三步:修改solr-6.3.0\server\solr-webapp\webapp\WEB-INF\web.xml
,在<servlet>
前添加
<listener>
<listener-class> org.apache.solr.handler.dataimport.scheduler.ApplicationListener
</listener-class>
</listener>
这时候运行solr会出错:
2016-12-07 19:40:49.372 WARN (main) [ ] o.e.j.w.StandardDescriptorProcessor Could not instantiate listener org.apache.solr.handler.dataimport.scheduler.ApplicationListener
java.lang.ClassNotFoundException: org.apache.solr.handler.dataimport.scheduler.ApplicationListener
此时需要一个dataimportscheduler.jar
,很多人都说到了,但是很多旧版本都用不了,会报找不到方法异常,如下:
2016-12-07 19:38:38.133 WARN (main) [ ] o.e.j.d.DeploymentManager Unable to reach node goal: started
java.lang.NoSuchMethodError: org.apache.solr.core.SolrResourceLoader.getInstanceDir()Ljava/lang/String;
at org.apache.solr.handler.dataimport.scheduler.SolrDataImportProperties.loadProperties(SolrDataImportProperties.java:31)
于是想到几个月前一位大神给我的dataimportscheduler.jar
的源代码,自己添加进项目,经过检查,发现SolrResourceLoader
的getInstanceDir()
方法被替换成了getInstancePath()
,修改代码以后重新打包,添加进项目就能正常工作了。
附上给我代码的大神的资源下载地址:http://download.csdn.net/detail/ljsososo/9486023#comment
6.3.0能用的dataimportscheduler.jar和源代码的下载链接。
增量导入语句请查看我的前一篇文章solr5.5.2 增量索引配置方法