GCSの全文検索をしてみた
Cloudストレージに格納したファイルの全文検索を行いたいが、S3の場合CloudSearchというマネージドサービスがあるが、GCSの場合は現状存在せず、Elastic Search等を使用する必要がある。
そこで、簡単に全文検索できないかと調べたところ、FESという全文検索サーバのOSSが使用できたため、今回紹介します。
FESの環境構築は以下記事に記載されているため、こちらを参考にさせてもらいました。
本記事では、GCSへのアクセスのところを記載します。
FESプラグインインストール
FESでGCSにアクセスするにはFESにプラグインをインストールする必要があります。
FESの管理画面からプラグインのインストールを行います。
ただ、GCSのプラグインはなく、そのままではGCSにアクセスできません。
ここで、GCSのS3互換エンドポイントを使用します。GCSのHMACキーを設定することで、S3アクセスライブラリを使用してGCSにアクセスすることができます。
GCS側の設定は、後述しますが、ここではプラグインの「fess-ds-s3」をインストールしておきます。
GCSのHMACキー設定
Cloud Storageの設定に相互運用性
という項目があります。
相互運用性で「相互運用アクセスのデフォルト プロジェクトの設定」と「ユーザー アカウントのアクセスキーの発行」を行います。
「相互運用アクセスのデフォルト プロジェクトの設定」は、デフォルトプロジェクトに設定する
ボタンを押せばOKです。
「ユーザー アカウントのアクセスキーの発行」も、鍵を作成
ボタンを押せばOKです。
発行した、アクセスキーとシークレットは後で使用するので、控えておきます。
これでGCS側の設定は完了です。
FESのクローリング設定
FES側の設定に戻り、クローリング設定を行います。
メニューからクローラー-データストアで新規作成を押下します。
名前:適当でOK
ハンドラー:AmazonS3DataStore
パラメーター:以下を設定
region=ap-northeast-1
access_key_id=GCSのHMACキー設定で取得したアクセスキー
secret_key=GCSのHMACキー設定で取得したシークレット
endpoint=https://storage.googleapis.com
buckets=クローリングしたいバケット、カンマ区切りで複数指定可能
※endpointは、https://storage.googleapis.com
共通です
スクリプト:以下のまま設定
url=object.url
title=object.key
content=object.contents
mimetype=object.mimetype
filetype=object.filetype
filename=object.filename
content_length=object.size
last_modified=object.last_modified
作成
ボタンを押してクローリング設定を作成します。
クローリング実行
作成したクローリング設定を再度押下すると、下部に新しいジョブの作成
ボタンがあります。
作成
ボタンを押し、ジョブを作成します。
作成するとジョブスケジューラーに登録されます。
スケジュールはクーロン形式で設定できますが、今すぐ開始
ボタンで即時実行できます。
しばらく待つと、クローリングが完了し、GCSのファイルが検索できるようになります。
テキストの中の文字で検索して、ちゃんと取得できています。
まとめ
GCSの全文検索も、FESを使用することで簡単に構築することができました。
今回は、ローカル端末で構築しましたが、ちゃんと使う場合にどれくらいのスペックが必要かは検討は必要になりそうです。
chameleonmeme.com/ きっかけは、偶然同じ現場で働いていたエンジニア3人の 「もっと仕事にのめり込んだり、熱中したいよね」という雑談でした。 営業から開発、サービスの提供まですべての工程を自分たちの手で行い、 気の合う仲間と楽しく仕事をすることで熱中するためにチームをスタートしました。
Discussion