0

我有以下情况:

  • 现有页面被 StormCrawler 抓取
  • StormCrawler 将对应的文档添加到 Elasticsearch 索引中
  • 该页面在服务器上被删除

=> 爬虫通过更新状态索引“检测”页面的删除:文档获得状态“FETCH_ERROR”(达到“max.fetch.errors”后状态为“ERROR”)。

问题:Elasticsearch-Index 仍然保留文档,但是由于页面已被删除,这没有任何意义。

查看配置,我还没有找到一种方法来告诉 StormCrawler 从 ES 索引中删除状态为“错误”的文档(例如已删除)。有没有办法使用 StormCrawler 来实现这一点,或者有没有理由为什么这是不可能的?

非常感谢您的帮助!

4

1 回答 1

0

我们计划添加 GONE 状态,但尚未实现,请参阅#253。与此同时,我们可以删除 ERROR 状态(即使它们中的大多数不会被添加到 ES),困难在于索引是在默认流上完成的,即已经获取和解析的文档,而状态信息被发送通过各种螺栓连接到状态流。我们可以有一个定制的删除螺栓——它只需要 URL 而不需要其他任何东西:要使用它,我们可以修改 AbstractStatusUpdaterBolt 以便它发出要删除的 URL 到一个特殊的流上,例如“删除”并将我们定制的 ES 删除螺栓连接到它。这有意义吗?请随时为上面链接的讨论做出贡献。谢谢!

于 2017-03-15T13:05:12.330 回答