我已经安装了包括Elasticsearch集成的StormCrawler。我还完成了StormCrawler创作者在YouTube上找到的引用视频。这是一个很好的介绍。我也熟悉Apache Storm。
但是,我发现缺少有关如何去那里的方法信息和视频。
现在,这引发了一个问题,即如何自定义StormCrawler。在哪个 bolt 之间应实现其他功能?另外,如何找出这些 bolt 之间传递的字段,以便找到可以提取的信息?另外,在将文档保存到Elasticsearch时,我应该更新Elasticsearch的方案,还是可以将其他字段直接发送到Elasticsearch bolt ?
最佳答案
好吧,这取决于您要实现的目标。你能举个例子吗?
您可以查看所使用的 bolt 的clarifyOutputFields方法,例如this one for the parser bolt。所有 bolt 都将URL和元数据对象作为输入,有些 bolt 将具有二进制内容或文本,具体取决于它们在链中的位置。
我认为其中一个视频中提到了这一点。 ES在根据字段的内容猜测字段的类型方面做得非常好,但是您可能希望显式声明它们,以完全控制它们在ES中的索引方式。
现在,基于以下评论获取实用答案。好消息是,您所需要的一切都应该已经可用,无需实现自定义 bolt 。您需要的是Tika module,它将从PDF中提取文本和元数据。与README指令的区别在于,您不需要将重定向 bolt 的输出连接到索引 bolt ,因为您不希望索引非PDF文档。最后一件事就是改变
parser.mimetype.whitelist,以便仅使用Tika解析PDF文档。
如果您正在使用Tika bolt ,请不要忘记将其连接到statusupdaterbolt。
关于java - 自定义StormCrawler,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/64634700/