📖

GCSの全文検索をしてみた

2022/10/03に公開

Cloudストレージに格納したファイルの全文検索を行いたいが、S3の場合CloudSearchというマネージドサービスがあるが、GCSの場合は現状存在せず、Elastic Search等を使用する必要がある。

そこで、簡単に全文検索できないかと調べたところ、FESという全文検索サーバのOSSが使用できたため、今回紹介します。

FESの環境構築は以下記事に記載されているため、こちらを参考にさせてもらいました。
https://zenn.dev/persona/articles/c6d7733335273c

本記事では、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を使用することで簡単に構築することができました。
今回は、ローカル端末で構築しましたが、ちゃんと使う場合にどれくらいのスペックが必要かは検討は必要になりそうです。

Discussion