マネージドなElasticsearch対応

Fessはelasticsearchプラグインを入れることで、全文検索としての機能拡張をelasticsearchに対して行ってきたけど、たまにマネージドなelasticsearchでは動かないのか?と聞かれるたびに、動かん、と回答してきた。7.11でライセンス問題やプラグインのアクセス権強化問題などがあったりして、この機会にマネージドなelasticsearchに対する対応を見直すことにしました。

elasticsearchプラグインがなしになると、辞書まわりの機能が使えなくなったりして、その辺の機能劣化が出てくるけど、それでもマネージドなelasticsearchを使いたいというケースではfess_config.propertiesで

elasticsearch.type=cloud
elasticsearch.http.url=http://<yourserver>:9200
elasticsearch.username=<elasticsearchにアクセスするユーザー名>
elasticsearch.password=<elasticsearchにアクセスするパスワード>

のような感じの設定することで、elasticsearchプラグインなしのelasticsearchを利用する感じになる。(今後、いろいろと検証したりしたら修正するかも…)

ただし、Fessは多言語対応している都合上、elasticsearch純正の以下のプラグインはインストールしておく必要があります。
・analysis-kuromoji
・analysis-nori
・analysis-smartcn
これらも入れたくないような場合は、fess.jsonとdoc.jsonを修正する必要があります。

という感じで、辞書のカスタマイズとかが必要ない&マネージドなelasticsearchを使いたい、みたいな場合には、利用できるかなと思います。Fess 13.11から利用できるようになる予定です。

Fess 13.10.3

Fess 13.10.3をリリースしました。特に大きな変更とかはないです。

・メンテナンス画面からの再インデクシングのパラメータを調整できるようにした
・再インデクシングの結果を確認してからエイリアスを張り替えるようにした
・RoleQueryHelperのmaxAgeのデフォルト値を修正した
・ADの利用時のロール名の正規化ロジック修正

という感じなので、細かいものばかりかなと思います。何かあれば、フォーラムに投げてください。

Fess 13.11に向けて…

elasticsearchのライセンス変更問題に対しては、ほぼ万全な準備ができていたのですが、elasticsearch 7.11がリリースされ、試してみたら大きな問題が発生しました…。7.11からelasticsearchプラグインが可能なアクセス権限が厳しくなり、elasticsearch-configsyncプラグインが利用できなくなったのです。このプラグインが使えなくなると何ができなくなるかというと、このプラグイン経由でelasticsearchに対して、辞書ファイルを送りつけていたのですが、それができなくることで、辞書変更ができなくなりました…。辞書がなければ、インデックスが作れないので、起動ができないと…。ということで、このプラグインへの依存度は大きく、この辺の仕組みを変えないと、しばらくリリースができないという感じです…。ということで、まず、

準備ができるまでは、elasticsearch 7.10系を対象にして、Fess 13.10.xのリリースが続く予定です。

13.11以降のバージョンに対しては、まず、configsyncプラグインをconfigsyncアプリに変更することで対応進めています。これにより、インストールするアプリが増えますが、今までどおりに辞書更新ができるようになる想定です。あとは、この機会にマネージドなelasticsearchのサポートも検討しようかなとも思います。マネージドなelasticsearchの場合、辞書の管理とか、一部の機能が利用できないことになるので、マネージドなelasticsearchを使うオプションを設定で追加して、機能を落とした感じで使えるようにしようかと。

という感じで、予定外の開発が発生してしまっている感じです。

FessのFesen対応

Fesenとは、Elasticsearchのライセンス問題を回避するためにフォークしたプロジェクトですが、FessはFesenをデフォルトの検索エンジンとして採用することで、今までどおり組み込みFesenでお試し的な簡易実行が可能になり、信頼性が求められるような環境では検索エンジンとしてElasticsearchを利用することができるようになります。

ライセンス変更が発表されてから方針検討で1日くらい考えて、フォークしてFesenを作り、Fessに組み込むというのを行いました。結構、短期間でできたかなと。なので、codelibs/fessのmasterブランチではFesenに切り替わっています。Fess 13.11からは組み込みFesenに変わります。

Fesenは、Maven化することでビルドの仕方を変えてしまったので、現時点ではzipパッケージしか作れません…。deb/rpmパッケージはそのうち作るかもしれませんが、組み込みFesenで使う分にはdeb/rpmが必要ないので、一旦、作成を保留にしようと思っています。あとは、パッケージ名をorg.elasticsearchからorg.codelibs.fesenに変えました。この点は考慮が甘かったのですが、パッケージ名を変更することで、既存のプラグインが使えなくなる問題が発生しました…。既存資産の流用はしたいところなので、fesen-plugin installをするときにasmでjarの中身を書き換えて、パッケージ問題を解決する感じにしました。なので、少なくてもFessで使うelasticsearchプラグインは動くはず…。(AWSがelasticsearchをフォークすると言っているけど、この辺をどうするのかちょっと気になっています…)

Fesenも動いたので、FessがFesenを参照するようにして、Fesen対応が完了しました。という感じで、大きくハマることなく、作業が完了できたので良かったかなと。あとは、elasticsearch 7.11がリリースされるまで、細々調整をして、準備していく感じになると思います。

Fesen

elasticsearchのライセンス変更問題でのFessの対応を始めています。elasticsearch 7.10.2をフォークして、Fess用の検索エンジンとして、Fesen (フェセン: Fess Search Engine)というのを作っています。

とりあえず、現時点ではビルドして、zipパッケージを作ると起動することができるようになりました。elasticsearchの本流は、Gradleを使っていますが、私が気持ちよくメンテできるようにしていくためにはMavenである必要があるため、Maven化しました。なので、必要なソースコードは持ってきている感じですが、ビルドの仕方は全く異なります。あとは、org.elasticsearchのパッケージですが、そこもorg.codelibs.fesenに変わります。起動するコマンドも./bin/fesenになりました。ほかには、Fess観点だとKibanaとか不要なので、いらないモジュールは外しておこうかなと思っています。

結構、ハマったのが、元のテストコードたちが循環参照している感じになっているので、そのままMavenに持ってきてマルチモジュールにするとテストを実行することができず…。その辺はプロファイルを設定して、コンパイルとテストが別々になるようにして、対応しました。ただ、一部、JarHellがどうしようもないのもあるので、そのテストなどはスキップしたりしましたが…。

あとは、rpmとdebのパッケージを作るようにすれば、一段落なので、ゴールはあと少しだと思います。Fess 13.11からはFesenがデフォルトになるように(たぶん、順調に)進行中です。