几年来,我一直在使用 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
文件(或直接从源代码构建),然后您将获得 v5.3 的 ES 客户端库。
有一些文档解释了如何升级 https://github.com/apache/nutch/blob/master/src/plugin/indexer-elastic/howto_upgrade_es.txt .当然,这个升级的“路径”取决于 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 客户端库支持的二进制协议(protocol)发送文档。
无论如何,Nutch 1.x 维护得更加积极,正如您所见,它比 2.x 分支更新得更多。
关于elasticsearch - 我应该在 Elasticsearch 中使用 Nutch 1x 还是 2x,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48344751/