Fess 14へのアップグレード

Elasticsearch 8ももうすぐリリースされるので、それに合わせて、Fess 14もリリースしていく予定で進めています。気持ち的には、今までどおりにElasticsearchのリリースと共にバージョンを上げていこうとは思っていますが、Fess 14では、Elasticsearch 7.x, Elasticsearch 8.x, OpenSearch 1.xが利用できるようになると思うので、Elasticsearchとの結びつきはより弱くなると思います。

Fess 13からのアップグレードをどうするかも考えていく必要がありますが、一番安全な方法は設定ファイルをバックアップして、新環境にリストアして、再クロールする、のが良いと考えています。なので、

1) Fess 13でfess_basic_config.bulkとsystem.propertiesをバックアップする
2) 新環境のFess 14にリストアする
3) クロールを開始して、インデックス作成

みたいな感じがクリーンな感じのアップグレードになると思います。

とはいえ、既存のインデックスに入っているものをどうしても再利用したい、みたいな場合は、管理画面のアップグレードから13系からのアップグレードを実行して、データ移行を行う感じになると思います。なので、

1) バージョンを上げてFess 14を起動する
(たとえば、docker-composeで指定しているバージョンをFess 14に変える)
2) 管理画面のアップグレードで13系からのバージョンアップを実行する
(古いインデックスから設定をコピーされる)
3) 管理画面のダッシュボードで.で始まる不要なインデックスを削除する

みたいな感じになると思います。Fess 14では設定情報を保存しているインデックス名にドットを使わないので、データを移行する必要があるので、上記のような方法でのデータ移行が必要になります。

Fesen HttpClient

Fess 14では、Elasticsearch 7.x, 8.xとOpenSearch 1.xをサポートする予定なので、これらへのアクセスを吸収してくれるようなクライアントが必要だったので、Fesen HttpClientをリファクタリングして、使えるようにしました。FesenはもともとElasticsearch 7.10をフォークして、Fessで利用していたものだけど、FesenをElasticsearch 8対応するのがつらすぎるので、それは断念して、Fesenで利用していたHttpClientだけが生き残って、Elasticsearch/OpenSearch対応して使える状態になったみたいな感じです。Fesen HttpClientは現時点ではMaven Centralに置いていないのですが、Elasticsearch 8がリリースされたら、Fessでテストして、Maven Centralに置いておく予定です。まぁ、全部のAPIに対応しているわけではなく、Fessで利用しているものが使える感じなものです。FessはいろいろなAPIを呼んでいるので、だいたいのAPIは利用できると思います。

という感じで、Fesen HttpClientができたので、Fess 14のElasticsearch 8対応に向けての大物は処理できたはず…。

Fess 14に向けて

Elasticsearch 8のリリースも近づいているので、それに対応したFess 14をどうしようかと考え始めている。作業もあれこれと始めているのだけど、Elasticsearch 8になると、パスから_docが消えるので、影響が結構大きいなと考えている。さらに、これにまじめに対応しようとすると、Fesenをかなり修正しないといけないのもあり、ちょっとそこまで時間を使うことができないかなと…。とはいえ、Elasticsearch 8にも対応していかないといけないし、みたいな悩ましい状況です。

そこで、いろいろと考えたところの現状は、
・Elasticsearch 7.10からフォークしたFesenをメンテしていくのは工数的につらそう
・同じくElasticsearch 7.10からフォークしていたOpenSearchは結構頑張っていそう
・Fessとしては、Elasticsearch 7&8とOpenSearchのサポートをしていきたい
というのがあるので、方針としては
・Fess 14.xはElasticsearch 8.xに合わせてリリースしていく
・Fessの内部コードはFesenからOpenSearchに変更する
・Elasticsearch7&8, OpenSearchの差分はfesen-httpclientで吸収する
という感じでいこうと考えています。なので、今までどおり、Elasticsearchのリリースに合わせて、Fessもリリースはしていく予定で考えています。

そんな感じで、zip版でお試し実行用の組み込み版はOpenSearchに変わることになります。一応、githubの最新ソースコードはOpenSearchに変わっています。まぁ、この辺は見た目にはわからないことなので、普通に使っている分には気づくこともないことですが、今後は、OpenSearchとの連携とかも強化されていくはず…。