我有一个“大数据”文本搜索问题,我曾在 Stackexchange 网站上寻找一般建议 - https://softwareengineering.stackexchange.com/questions/203855/text-search-big-data-problem
对于这篇 SO 帖子,这里有一个特定的问题,即围绕 ElasticSearch 与 Hadoop 的集成(但我想我会提供一些背景知识)。
问题概述
基本上我有大量的文本,分成不同的“行”,每一行代表一个项目。我有另一个较小的列表,其中包含此文本中的搜索词。我想交叉引用这两者并进行反向索引查找,并返回我找到的索引。
注意:我知道 20GB 不是海量数据,但本练习的次要目标是与大数据技术人员合作,为我们使用真正的大数据 (> TB) 项目奠定基础!
方法
我继续调查 Lucene 搜索路线,但据我所知,这将导致以下方法:
- 使用 MapReduce 删除停用词和格式化文本等
- 生成 Lucene 索引(可能使用 MapReduce - 这是一种优化)
- 开发一个 C# 应用程序来与 Lucene(或 SolR)交互并进行搜索。
但对我来说,这仍然是串行的,即我将依赖于搜索服务器的可扩展性来非常快,但我仍然必须从我的列表顶部开始,然后一个接一个地完成它其他。
我可以将原始列表拆分成块,然后在不同的服务器上运行我的 C# 应用程序,这将是一种方法。
具体问题
但我想知道是否可以使用 Hadoop Map Reduce 直接与 ElasticSearch(我首选的 Lucene 路线)互动?我已经搜索过(!)但找不到任何东西,除了将 Wonderdog 与 Pig 一起使用。很好 - 但我看不到 Pig UDF 和 ElasticSearch 的示例。
任何指针表示赞赏,非常欢迎代码示例!
邓肯