我对ElasticSearch和Apache Nutch集成有疑问。
我已尝试按照此处列出的Nutch + ES指南进行操作
https://gist.github.com/xrstf/b48a970098a8e76943b9
https://qbox.io/blog/scraping-the-web-with-nutch-for-elasticsearch
和
http://www.aossama.com/search-engine-with-apache-nutch-mongodb-and-elasticsearch/
具体来说,我能够设置HDFS + HBase + Nutch并抓取一个页面列表(我可以确认数据确实被抓取并存储在HBase的网页表中)。
我也可以让ElasticSearch和Kibana无问题地工作(成功创建新索引并插入一些记录,确认与Kibana合作)
然而,我无法让他们的组合工作。基本上,我在Nutch之后做了以下命令:
nutch inject <file_containing_url>
nutch generate -topN 1
nutch fetch -all
nutch parse -all
nutch updatedb -all
现在,我想将获取的数据编入索引,然后按照指南进行操作:
nutch index elasticsearch -all
但是,在此命令执行完毕后,ElasticSearch中没有任何更改。运行时/本地/日志下的日志显示:
elastic.ElasticIndexWriter - Processing remaining requests [docs = 0, length = 0, total docs = 0]
这让我相信ES不会被nutch索引任何东西。
我在整个过程中哪里做错了?我是否必须向ES指定一些关于ES的东西?
仅供参考:以下是一些操作系统/工具的详细信息: CentOS 6.7,HBase 1.1.3 ElasticSearch 1.7.5,Nutch 2.3.1。 我修改了nutch-site.xml以包含ES的属性:
<property>
<name>plugin.includes</name>
<!-- do **NOT** enable the parse-html plugin, if you want proper HTML parsing. Use something like parse-tika! -->
<value>protocol-httpclient|urlfilter-regex|parse-(text|tika|js)|index-(basic|anchor|more)|query-(basic|site|url)|response-(json|xml)|summary-basic|scoring-opic|urlnormalizer-(pass|regex|basic)|indexer-elastic</value>
</property>
<property>
<name>elastic.host</name>
<value>10.5.140.112</value> <!-- where is ElasticSearch listening -->
</property>
<property>
<name>elastic.cluster</name>
<value>nutch</value>
</property>
<property>
<name>elastic.index</name>
<value>nutch</value>
</property>
<property>
<name>elastic.port</name>
<value>9300</value>
</property>
非常感谢你的帮助!
答案 0 :(得分:0)
我不知道我是否完全理解这一点并且不确定以下任何步骤是否有帮助,但最终我成功将某些页面编入索引:
这就是我的所作所为:
我发现嵌入root_nutch_folder / src / plugins /的ES客户端java是版本1.4.1。我将其升级到1.7.5(匹配我的ES本地服务器版本),遵循indexer-elastic文件夹中指定的howto_upgrade_es.txt文件。但是,我不认为这有助于解决这个问题,因为它并不能告诉ES索引任何内容,而不是ES客户端 - 服务器通信问题。
我发现可能影响索引的关键是我的网页实际上没有被抓取,尽管“网页”中有记录。 HBase中的表。最初我尝试了http://www.espn.com并且做了nutch注射。但是,由于www.espn.com将重定向到espn.go.com,因此nutch不会自动遵循重定向,因此不会下载内容HTML。但是,nutch日志将显示“成功”。每时每刻。甚至HBase也会记录有关www.espn.com的信息。
我重新注入&#39; http://espn.go.com/&#39;并重新整理整个过程,现在它已正确索引到ES中。
我在网上搜索并发现我需要在nutch-site.xml中设置http.redirect.max,但是,无论我如何设置它,nutch仍然不会遵循302重定向请求。我想我将不得不忍受这个。
答案 1 :(得分:0)
从nutch文件夹的运行时文件夹中的本地文件夹尝试bin/nutch index -all
。另外,如果仍然无效,请尝试使用bin/nutch generate -topN <any_number>
再次生成它,然后使用以下命令再次获取并解析它们
bin/nutch fetch -all
bin/nutch parse -all
最后,
bin/nutch updatedb -all
然后使用本地文件夹中的命令再试一次
bin/nutch index -all
希望这会有所帮助。