我应该将 Nutch 1x 还是 2x 与 Elasticsearch 一起使用

Should I use Nutch 1x or 2x with Elasticsearch

几年来,我一直在使用 Nutch 1.10 将数据索引到 Elasticsearch。不久前,我决定开始升级到 Nutch 和 ES 的新版本。

经过大量谷歌搜索后,似乎人们越来越多地使用 Nutch 2.x,尽管 Nutch 1.x 似乎速度更快并且正在更积极地开发中。也好像是Nutch 1.10以后,Nutch 1x配合ES用起来更难了

似乎最大的区别在于您可以使用 Nutch 2.x 将抓取的数据存储到不同的数据库中。看来 Nutch 1.x 真的很擅长爬行和快速爬行,但仅此而已。

那么哪个版本的 Nutch 最适合与 ES v2+ 或 ES v5x 一起使用?

如果您是 运行 用于生产的 Nutch,那么坚持使用 Nutch 1.x 可能更好,它具有更多功能,正如您所说,性能比 2.x 更好。至于ES兼容性,我觉得差别不大。

Nutch 1.x 实际上与 ES 5.3 兼容,这意味着如果您下载 .zip 文件(或直接从源代码构建),那么您将获得 ES 客户端库对于 v5.3。

有一些文档解释了如何升级 https://github.com/apache/nutch/blob/master/src/plugin/indexer-elastic/howto_upgrade_es.txt。当然,这个 "path" 的升级取决于 ES 客户端库如何不改变它的 public API (这可能会发生),此时 PR 将非常受欢迎。

Nutch 2.x 有点落后(仍然支持 ES 1.x,2.x)但它有一个类似的升级文档,但有与以前相同的警告。

另一种选择是使用 indexer-elastic-rest 插件,它不依赖于 ES 客户端库,而是依赖于 Searchly (https://github.com/searchbox-io/Jest) 的 Jest 库,这意味着文档将使用REST API 而不是使用 ES 客户端库支持的二进制协议。

无论如何,Nutch 1.x 得到了更积极的维护,正如您所看到的,它比 2.x 分支更新得更多。

选择 Nutch 1.X,我正在使用 nutch 1.14 和 ES 5.6.0 使用 indexer-elastic-rest 并且它可以无缝工作,没有任何问题。