我正在尝试将Apache Nutch 2.2.1
与Elasticsearch 0.90.11
进行整合。
我已经按照所有可用的教程(虽然没有那么多),甚至更改bin/crawl.sh
使用elasticsearch来索引而不是solr。
似乎一切都在我运行脚本时工作,直到elasticsearch试图索引已爬网的数据。
我检查了nutch下的logs文件夹中的hadoop.log,发现了以下错误:
java.lang.NoSuchFieldError: STOP_WORDS_SET
java.lang.NoClassDefFoundError: Could not initialize class org.apache.lucene.analysis.en.EnglishAnalyzer$DefaultSetHolder
如果你设法让它工作,我将非常感谢你的帮助。
谢谢, 安德烈。
答案 0 :(得分:1)
从未使用Apache Nutch,但只是简单地阅读它,我怀疑你包含Elasticsearch会导致类路径与类别路径上 的不同版本的Lucene发生冲突。基于Maven POM,它没有直接指定Lucene,那么我建议只包括与Elasticsearch绑定的Lucene,which should be Apache Lucene 4.6.1 for your version。
当您确定自己拥有必要的代码时,重复的代码(同一个jar的不同版本)倾向于成为NoClassDefFoundError
的原因。基于您从Solr切换到Elasticsearch的事实,那么您在类路径上留下Solr的任何罐子都是有意义的,这会导致手头的碰撞。 Solr的当前版本是4.7.0,与Lucene相同,并且会与4.6.1冲突。