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との連携とかも強化されていくはず…。

Fess 13.15.1のリリース

Fess 13.15.1をリリースしました。メンテナンスリリース的な感じなので、特に大きな変更とかはないですが、いつものように順番に見ていくと、

#2605はfess_config.propertiesにldap.allow.empty.permissionを加えました。これは、LDAPの認証を利用時にグループまたはロールを持たないユーザーをログインさせるかどうかになります。falseになると、グループ権限が全くないユーザーはログインできなくなります。これにより、LDAPのクエリーを工夫することで、ログインの制御ができます。

#2604はLDAPログイン時にパーミッションが重複して保持するケースがあるので、重複しないようにしました。

#2601はAzure ADを認証に利用しているときに、リソースがないリクエストのエラーを無視しても良いものが警告でログが出力されるので、デバッグレベルにログレベルを変更しました。

#2600はクロール時に中間データのアクセスで問題がある場合にログを適切な出力できるようにしました。

#2599はAPIアクセス時にエラーメッセージがわかりにくいので、適切なメッセージを返すようにしました。

これ以外のところでは、管理画面のダッシュボードでOpenSearchを利用時にバージョンチェックのエラーが出てしまうのを修正したり、Dockerではfessユーザーのホームディレクトリが設定されていないためにサムネイル生成がうまくいかないケースがあるのを修正したり、Fess本体以外でも修正は入っています。

何かあれば、フォーラムに投げてみてください。

OpenSearch対応

FessとOpenSearch 1.1で動くようにしようと思い、Elasticsearchのプラグインたちを移行し始める。ただ、Elasticsearchプラグインたちは7.15系になってしまっているので、Fesenからコピーして作ることにしてみた。

analysis-fess, analysis-extension, minhash, configsyncの4つのプラグインを移植すればよいのだが、簡単にできるかと思いきや、minhashだけがそこそこ修正が必要になってしまった…。理由は、最新のElasticsearchでは独自に作ったフィールドでも簡単にcollapse対応ができるのだが、OpenSearchのはKeywordFiledTypeとNumberFiledTypeの2択になっており、FieldMapperで独自のFieldTypeを使うとcollapseできない…。なので、MinhashFieldMapperで独自のFieldTypeを定義せずに、KeywordFieldTypeを使うように書き換えたりする必要があった…。

それ以外は、OpenSearch自体がMavenセントラルにJarファイルを置いてくれているので、簡単に移植することができた。とはいえ、ログの出力まわりが期待と異なる動きをしているので、今後調査をしていく必要がある気がしている。現状、deprecationログが結構出てしまうので、

curl -X PUT "localhost:9200/_cluster/settings?flat_settings=true&pretty" -H 'Content-Type: application/json' -d'
{
    "transient" : {
        "logger.org.opensearch.deprecation": "ERROR"
    }
}'

を実行して止めるとかしたほうが良いかもしれない…。

そんな感じではありますが、このdocker-composeを使えば利用することができます。

コードリブズのサイト更新

株式会社コードリブズのサイトは、会社設立する際に必要だったので、ざっくりと作りましたが、あれから2年ほど経ち、この機会にリニューアルすることにしました。だから何だという話ではありますが、コンテンツもちょっと整理しつつみたいな感じです。お問い合わせフォームを作りたいところですが、ただのHTMLとして置いてあるだけなので、どうしようか考え中…。Googleフォームとかで簡単に作れないかなとも…。という感じではありますが、何か面白い仕事があれば、お知らせください。