今まで、Fessの利用環境を構築するには「Elasticsearch」をインストールして構築する必要がありました。Fess 13.11からはマネージドなElasticsearchも利用できるようになり、Fessをクラウド環境で利用しやすくなりました。

今回は、Elastic社が提供しているサービスの中から、マネージドのElasticsearchやKibanaをAWS、Google Cloud、Microsoft Azure上で利用することができる「Elastic Cloud」でのFessの利用方法について説明します。

Elastic CloudからElasticsearch Serviceを利用する

Elastic Cloudのアカウントを作成すると、Elastic Cloudのサイトからログインして利用できるようになります。無料トライアルも提供されているので、マネージドのElasticsearchを手軽に試すことも可能です。

ログインしてElastic Cloudを利用しようとすると、以下のような画面が表示されます。

製品の選択

製品の選択

Fessでは、Elasticsearchを利用するだけなので「Enterprise Search」を選択して、「Create deployment」ボタンをクリックしてください。

以下のように、「Elasticsearch Service」にアクセスするためのユーザー名とパスワードが表示されます。

ユーザー名とパスワード

ユーザー名とパスワード

「Download」ボタンをクリックすると、Elasticsearchのクラスタの作成が始まります。ダウンロードしたCSVファイルには、ユーザー名とパスワードが記載されています。

しばらく待ち、Elasticsearchが利用可能な状態になると、以下の画面が表示されます。

デプロイ後の画面

デプロイ後の画面

Elasticsearchプラグインのインストール

次に、 Elasticsearchのプラグインをインストールします。 Elasticsearch Serviceでは、画面上でプラグインを選択してインストールすることができます。

左メニューの「Edit」をクリックしてクラスタの編集画面が表示されたら、「Settings and Plugins」のリンクをクリックしてください。

編集画面

編集画面

Fessでは以下のプラグインを利用するので、それらにチェックを入れ、「Back」ボタンをクリックし、編集画面に戻ります。

  • analysis-kuromoji
  • analysis-nori
  • analysis-smartcn
プラグイン選択画面

プラグイン選択画面

「Save」ボタンをクリックすると確認画面が表示されるので、表示されたプラグイン名を確認して「Confirm」ボタンをクリックします。

確認画面

確認画面

プラグインのインストールが始まり、各ノードが再起動されるので、適用されるまで少し待ちます。

ここまでがElastic Cloudの設定です。その他の項目については、ご利用の環境に合わせて設定してください。

Fessの起動

マネージドのElasticsearchを利用する場合、FessもDockerが利用できるようなマネージドの環境上で利用することが考えられます。Dockerで実行するには、以下のように「docker run」を実行するとFessを起動できます。

docker run -d -p 8080:8080 \
  -e ES_HTTP_URL=<ElasticsearchのエンドポイントURL> \
  -e ES_TYPE=cloud \
  -e ES_USERNAME=elastic \
  -e ES_PASSWORD=<elasticsearchのパスワード>\
   ghcr.io/codelibs/fess:13.12

エンドポイントURLは、前掲のデプロイ後の画面(「enterprise-Search-deployment」画面)の「Applications」でElasticsearchの「Copy endpoint」をクリックすると取得できます。Elasticsearchのパスワードは、Elasticsearchの作成時にダウンロードしたCSVファイルの情報を確認してください。

ローカル環境で「docker run」を実行した場合、「http://localhost:8080」にアクセスしてFessの管理画面にログインしてください。ダッシュボードでは Elastic Cloudのノードが表示されています。

ダッシュボード

ダッシュボード

Docker以外での利用

ZIPパッケージのFessでElastic Cloudを利用したい場合は、app/WEB-INF/classes/fess_config.propertiesを以下のように編集します。

elasticsearch.type=cloud
elasticsearch.http.url=<ElasticsearchのエンドポイントURL>
elasticsearch.username=elastic
elasticsearch.password=<Elasticsearchのパスワード>

Fessでの制限事項

Elastic Cloudでは、Fessがユーザー辞書管理で利用するプラグインをインストールできません。そのため、Fessの管理画面上では辞書編集機能が無効になっています。ユーザー辞書を管理したい場合は、Fessのインデックスマッピングを編集する必要があります。

* * *

今回はElastic Cloudに接続して、Fessを起動する方法をご紹介しました。マネージドのElasticsearchを利用することでFess環境の運用が楽になるので、新たな選択肢として検討してみてください。

著者紹介

菅谷 信介 (Shinsuke Sugaya)

Apache PredictionIOにて、コミッター兼PMCとして活動。また、自身でもCodeLibs Projectを立ち上げ、オープンソースの全文検索サーバFessなどの開発に従事。

本連載の内容やFessに関するご質問は公式フォーラムまで。