我有一个关于ElasticSearch和Apache集成的问题。
我试着遵循这里列出的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现在,我想将获取的数据索引到ES中,然后我遵循了指南:
nutch index elasticsearch -all但是,在此命令完成执行后,ElasticSearch中不会发生任何更改。运行时/本地/日志下的日志显示:
elastic.ElasticIndexWriter - Processing remaining requests [docs = 0, length = 0, total docs = 0]这让我相信,nutch根本没有要求ES索引任何内容。
我在整个过程中做错了什么?我必须向nutch说明一些关于ES的事情吗?
FYI:下面是一些操作系统/工具的详细信息: 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>非常感谢大家的帮助!
发布于 2016-03-02 22:48:53
我不知道我是否完全理解了这一点,也不确定以下任何步骤是否有帮助,但最终我成功地将一些页面索引到ES:
我所做的是:
我发现嵌入在root_nutch_文件夹/src/plugins/中的ES客户端java是1.4.1版本。我按照索引器弹性文件夹中指定的howto_upgrade_es.txt文件将其升级到1.7.5 (匹配我的ES本地服务器版本)。然而,我不认为这对问题有帮助,因为是nutch没有告诉ES索引任何东西,而不是ES客户端-服务器的通信问题。
我发现可能影响索引的关键是我的页面实际上没有爬行,尽管在HBase中的“网页”表中有记录。一开始,我尝试了http://www.espn.com并做了nutch注射。但是,由于www.espn.com将重定向到espn.go.com,nutch不会自动遵循重定向,因此不会下载内容HTML。然而,nutch日志将始终显示出“成功”。甚至HBase也会记录有关www.espn.com的信息。
我重新注入了'http://espn.go.com/‘并重新运行了整个过程,现在它被正确地索引到ES中。
我在网上搜索了一下,发现我需要在nutch-site.xml中安装http.redirect.max,但是,不管我如何设置它,nutch仍然不会遵循302重定向请求。我想我得忍受这一切。
发布于 2019-10-04 11:11:46
从位于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中的命令重试
希望能帮上忙。
https://stackoverflow.com/questions/35711402
复制相似问题