我有一个HDFS存档来存储各种文档,如 pdf,ms word文件,ppt,csv 等。我想使用elasticsearch构建一个平台来搜索文件或文本内容。我知道我可以使用 es-hadoop 插件将数据从HDFS索引到ES。我想知道我可以从存储在HDFS中的文档中提取文本数据并将其编入索引的最佳方法。
任何帮助都将不胜感激。
答案 0 :(得分:2)
您可以使用Elasticsearch mapper attachments plugin。此插件使用Apache Tika来摄取几乎所有已知类型的文档,并使其可由Elasticsearch进行搜索。 希望有所帮助。
答案 1 :(得分:1)
我做了很多搜索,这是我到目前为止找到的方法列表。
这是整个集成/插件页面: https://www.elastic.co/guide/en/elasticsearch/plugins/master/integrations.html
这里是映射器附件的新替代品,Injest插件: https://www.elastic.co/guide/en/elasticsearch/plugins/current/ingest-attachment.html 关于如何使用它的帖子:https://qbox.io/blog/index-attachments-files-elasticsearch-mapper 这里讨论了使用Injest vs fs-crawler的优缺点(dadoonet是一个弹性开发人员): https://discuss.elastic.co/t/mapper-attachment-plugin-vs-pre-parsing-and-extracting-content-from-binary-files/73764/10
这是文件系统爬虫(FS crawler)插件: https://github.com/dadoonet/fscrawler
这是Ambar文档搜索系统 - 他们有一个带有开源代码的社区github: https://ambar.cloud/ https://github.com/RD17/ambar https://blog.ambar.cloud/ingesting-documents-pdf-word-txt-etc-into-elasticsearch/ 他们似乎使用两种数据库服务器类型(MongoDB和Redis),不知道为什么。
这是Apache Tika,Injest和Ambar都使用(并且通过使用Tesseract提供OCR,我听说过Injest不支持): http://tika.apache.org/1.16/
此外,在Injest使用Tika时,只支持一部分文件类型: https://discuss.elastic.co/t/full-list-of-supported-document-formats-by-es/81149
我希望以上内容可以节省其他开发人员的时间,如果人们发现更多,他们会在下面发表评论。
谢谢!