S3にバケットがあり、そこに大量のテキストファイルがあります。
テキストファイル内のテキストを検索したい。生データのみが含まれます。また、各テキストファイルには異なる名前が付いています。
この例では、バケット名があります。
abc/myfolder/abac.txt
xyx/myfolder1/axc.txt
&上記のテキストファイルで「I am human」のようなテキストを検索したい。
これを達成する方法は?それも可能ですか?
これを行う唯一の方法は、ソースとしてS3を使用できる CloudSearch を使用することです。高速検索を使用して機能し、インデックスを構築します。これは非常にうまく機能しますが、価格モデルを徹底的にチェックして、コストがかかりすぎないことを確認してください。
代替案はジャックが言ったとおりです-そうでなければ、ファイルをS3からEC2に転送し、そこで検索アプリケーションを構築する必要があります。
2015年10月1日 AmazonはElastic Searchを使用して別の検索サービスを提供しているため、クラウド検索とほぼ同じように、 Amazon S3バケットからデータをストリーミング できます。
これはラムダ関数と連携して、S3バケットに送信される新しいデータがこのラムダへのイベント通知をトリガーし、ESインデックスを更新することを確認します。
すべてのステップは Amazon doc で詳しく説明されており、JavaおよびJavaScriptの例が含まれています。
高レベルでは、Amazon ESにデータをストリーミングするように設定するには、次の手順が必要です。
EMRがある場合は、sparkアプリケーションを作成して検索を実行します。これを実行しました。これは分散検索として機能します
Filestash (Disclaimer:I's author)を使用して、独自のインスタンスをインストールし、S3バケットに接続できます。大量のデータがあり、良い状態である必要がある場合は、最終的に全体をインデックス化するために少し時間を与えます