首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ElasticSearch与Nutch集成

ElasticSearch与Nutch集成
EN

Stack Overflow用户
提问于 2016-02-29 22:55:32
回答 2查看 2.6K关注 0票数 1

我有一个关于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做了以下命令之后:

代码语言:javascript
复制
nutch inject <file_containing_url>
nutch generate -topN 1
nutch fetch -all
nutch parse -all
nutch updatedb -all

现在,我想将获取的数据索引到ES中,然后我遵循了指南:

代码语言:javascript
复制
nutch index elasticsearch -all

但是,在此命令完成执行后,ElasticSearch中不会发生任何更改。运行时/本地/日志下的日志显示:

代码语言:javascript
复制
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的属性:

代码语言:javascript
复制
    <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>

非常感谢大家的帮助!

EN

回答 2

Stack Overflow用户

发布于 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重定向请求。我想我得忍受这一切。

票数 0
EN

Stack Overflow用户

发布于 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中的命令重试

希望能帮上忙。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35711402

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档