「ビッグデータ」のテキスト検索の問題があり、ここの Stackexchange サイトで一般的なアドバイスを探していました - https://softwareengineering.stackexchange.com/questions/203855/text-search-big-data-problem
ここでは、この SO の投稿、つまり、ElasticSearch と Hadoop の統合に関する特定の質問があります (ただし、背景を説明したいと思います)。
問題の概要
基本的に、大量のテキストがあり、個別の「行」に分割されています。各行はアイテムを表しています。このテキストに含まれる検索用語を含む別の小さなリストがあります。2 つを相互参照し、逆インデックス検索を行い、見つけたインデックスを返したいと思います。
注: 20 GB が大規模なデータではないことはわかっていますが、この演習の第 2 の目的は、ビッグ データ技術者と協力して、真のビッグ データ (> TB) プロジェクトで使用するための基盤を築くことです!
アプローチ
Lucene の検索ルートを調査し続けましたが、私が見る限り、これは次のアプローチにつながります。
- MapReduce を使用してストップ ワードを削除し、テキストなどをフォーマットします
- Lucene インデックスを生成します (おそらく MapReduce を使用します - これは最適化です)
- Lucene (または SolR) と連携して検索を実行する C# アプリを開発します。
しかし、私にとっては、これはまだ連続的なものです。つまり、検索サーバーのスケーラビリティが非常に高速であることに依存していますが、リストの一番上から始めて、1 つずつ順番に進めていく必要があります。別。
元のリストをチャンクに分割し、C# アプリを別のサーバーで実行することができます。これがアプローチになります。
具体的な質問
しかし、Hadoop Map Reduce を使用して、ElasticSearch (Lucene への私の優先ルート) を直接操作できるかどうか疑問に思っていました。(!) 検索しましたが、Pig で Wonderdog を使用する以外に何も見つかりません。わかりました。ただし、Pig UDF と ElasticSearch を使用した例は見当たりません。
任意のポインターを歓迎します。コード例は大歓迎です!
ダンカン