Nutch抓取后的Solr索引失败,报告"索引器:java.io.IOException:作业失败!"

时间:2017-05-19 08:11:01

标签: java solr nutch

我在一个ec2-instance上集成了Nutch1.13和Solr 6.5.1。我使用下面的cp命令将schema.xml复制到Solr。我在nutch_home / conf文件夹中的nutch-site.xml中将localhost作为elatic.host。

  

cp /usr/local/apache-nutch-1.13/conf/schema.xml /usr/local/apache-nutch-1.13/solr-6.5.1/server/solr/nutch/conf /

每次创建托管模式时都会创建自己的solr 6.所有直到索引的工作都能正常工作。我试过的命令是

  

[ec2-user @ ip-172-31-16-137 apache-nutch-1.13] $ bin / crawl -i -D solr.server.url = http://35.160.82.191:8983/solr/#/nutch/ urls / crawl 1

在运行命令之前,一切似乎都很好。我完全陷入了最后一步。

  

运行错误:     /usr/local/apache-nutch-1.13/bin/nutch index -Dsolr.server.url =://35.160.82.191:8983 / solr /#/ nutch / crawl / crawldb -linkdb crawl / linkdb crawl / segments / 20170519074733   退出值为255失败。

提前致谢

更新 我在conf / nutch-site.xml

中更改了下面的prperty
<property>
<name>plugin.includes</name>
<value>protocol-http|urlfilter-regex|parse-html|index-(basic|anchor)|query-(basic|site|url)|response-(json|xml)|summary-basic|scoring-opic|urlnormalizer-(pass|regex|basic)</value>
</property>

现在没有错误但我得到了

  

重复数据删除在2017-05-19 10:08:05结束,过了00:00:03   索引20170519100420索引   /usr/local/apache-nutch-1.13/bin/nutch index -Dsolr.server.url = // 35.160.82.191:8983/solr/nutch/ crawl / crawldb -linkdb crawl / linkdb crawl / segments / 20170519100420   分段目录已完成:crawl / segments / 20170519100420。   Indexer:从2017-05-19 10:08:06开始   索引器:删除已删除的文件:false   Indexer:URL过滤:false   Indexer:URL规范化:false   没有激活IndexWriters - 检查您的配置   索引器:索引,删除或跳过的文档数:   索引器:44索引(添加/更新)   索引器:于2017-05-19 10:08:10结束,已过去:00:00:03   尽可能清理索引   /usr/local/apache-nutch-1.13/bin/nutch clean -Dsolr.server.url = // 35.160.82.191:8983/solr/nutch/ crawl / crawldb   5月19日星期五10:08:13 UTC 2017:完成循环1次迭代

更新2 我发现在这个post中在nutch-site.xml帮助中添加了solr-indexer,但现在错误在于清理部分

  

运行错误:     /usr/local/apache-nutch-1.13/bin/nutch clean -Dsolr.server.url =://35.160.82.191:8983 / solr / nutch / crawl / crawldb   退出值为255失败。

因为我想使用Solr实现搜索引擎所以有任何建议 更新3

现在没有任何错误。但由于某种原因,取出不起作用。仅提取和爬网urls / seed.txt中指定的URL。 nutch没有外部链接。

  

[ec2-user @ ip-172-31-16-137 apache-nutch-1.13] $ bin / crawl -i -D solr.server.url = http://35.160.82.191:8983/solr/nutch/ urls / crawl 5   注入种子URL   /usr/local/apache-nutch-1.13/bin/nutch inject crawl / crawldb urls /   注射器:从2017-05-19 12:27:19开始   Injector:crawlDb:crawl / crawldb   注射器:urlDir:urls   注入器:将注入的URL转换为爬网数据库条目。   注入器:覆盖:false   注入器:更新:false   Injector:过滤器拒绝的网址总数:0   注射器:标准化和过滤后注入的总网址:1   注射器:注射的总网址但已经在CrawlDb中:1   注射器:注入的新网址总数:0   注射器:在2017-05-19 12:27:21完成,经过时间:00:00:02   5月19日星期五12:27:21 UTC 2017:迭代1的5   生成新细分   /usr/local/apache-nutch-1.13/bin/nutch generate -D mapreduce.job.reduces = 2 -D mapred.child.java.opts = -Xmx1000m -D mapreduce.reduce.speculative = false -D mapreduce.map .speculative = false -D mapreduce.map.output.compress = true crawl / crawldb crawl / segments -topN 50000 -numFetchers 1 -noFilter   发电机:从2017-05-19 12:27:23开始   生成器:选择要获取的最佳得分网址。   生成器:过滤:false   发电机:正常化:真实   发电机:topN:50000   生成器:选择0条记录进行提取,退出...   生成返回1(未创建新段)   转义循环:不再需要立即获取的网址

我想使用来自Solr的网络搜索结果的nutch数据 最终更新

[ec2-user@ip-172-31-16-137 apache-nutch-1.13]$ bin/crawl -i -D solr.server.url=://35.160.82.191:8983/solr/nutch/ urls/ crawl  1 

1 个答案:

答案 0 :(得分:0)

nutch-site.xml不需要复制到Solr,只需要schema.xml文件来指定您想要来自Nutch的数据的架构。如果您使用的是Solr而非ES,则不需要此参数elatic.host。检查logs/hadoop.log文件以查看是否有更多关于异常的数据,当然,检查Solr端的日志,此错误通常意味着Solr配置出现问题,缺少字段等。在这种情况下,既然你没有复制schema.xml并且Nutch没有利用Solr 6上的托管模式,Solr必须抱怨缺少的字段,也包括#字符的solr URL并不好看,Solr Admin UI如何在浏览器中显示数据,但是从Nutch /终端使用它应该是/solr/nutch

BTW检查the tutorial虽然最近的Solr版本中的一些路径已经改变,但仍然是关于集成如何工作的良好指导