OpenAPI対応

Fessでは、検索APIを提供していますが、今まで放置してきたOpenAPI対応に取り組むことにしました。既存のAPIをベースにopenapi.yamlを作れば良いかなと思っていたのですが、いろいろと作業していると、サジェストAPIとの整合性もほぼないですし、統一性がないので、思い切って、一新することにしました。

今回作成したOpenAPIのyamlファイルは、openapi-user.yamlという感じです。現時点では、足りない情報とかもある気はしますが、ちょっとずつ対応していこうと思います。ということで、14.8からはこのAPIがデフォルトになります。

で、今までのJSON APIやGSA APIはどうするか?ということですが、本体からは取り除いて、プラグイン化して、利用するようにしようと思います。なので、過去と互換性が必要であれば、プラグインを追加して、対応するみたいな感じを想定しています。

という感じで、次のバージョンからOpenAPIのyamlが提供される予定です。

Fess 14.7.0のリリース

Fess 14.7.0をリリースしました。細々としたものをいろいろと修正したような気もしますが、振り返っていきます。

まず、#2716はログファイルが指定した保存期間で古いのが消えるようにしました。90日以前のファイルは消すようになります。

#2717はサムネイルの保存ディレクトリのパス階層を変更しました。ファイルやディレクトリの数を減らすためです。

#2719はログファイルの出力形式をECS形式で出力できるようにしました。Docker版を利用すると、このバージョンからログがJSON形式で出力されるようになります。

#2721はjQueryのバージョンを最新化しました。

#2722はクロール時にHTMLのタグを取り除く機能があるのですが、取り除くタグをクロール設定の設定パラメーターにconfig.html.pruned.tagsで指定できるようにしました。クロール時にHTML上で無視したい利用域とかあれば、これでタグを指定できます。

#2723は内部で利用しているOpenSearchのバージョンを2.6にしました。

#2725はサムネイルの出力ログ周りの改善です。問題調査のログの整理をしました。

#2727は検索に失敗したときにシステムエラーでなく、検索失敗的なエラーメッセージを出す感じに変更しました。

#2728はドキュメントの部分更新の方法でupdate by queryで更新する対応を入れました。OpenSearchのNeural Searchを使うときにingest pipelineを使うのですが、pipelineはupdateを受け付けないためです。

#2729はScroll APIが動いていなかったので、修正しました…。

#2730はCopyrightが2022年のままだったので、更新しました。

という感じで、細々とした修正を入れた感じですが、そろそろOpenSearchのNeural Searchを使えるような状態にしていきたいなと思い、その辺の対応を入れている感じになります。現状でも、ベクトルで検索ができるのですが、いろいろと整理して、画像や音声もベクトル化して検索できるようにしていきたいなとは思っています。あとは、そろそろKubernetesでも簡単に使えるようにHelmチャートも用意しようと思ってはいますが、未着手です…。そんな感じですが、何かあればフォーラムに投げてください。

FessのログをJSON形式で出力

Fess 14.7からfess.logなどでログの出力形式をJSON形式に変える予定です。ちょっと前からそろそろJSONにしておいた方が便利そうだよな…と思っていたのですが、最近、ログ周りの整理をし始めたので、それに合わせて、JSON形式に変えることにしました。

とはいえ、JSON形式という感じで考えるのも自由すぎるし、変更量が多くなってもめんどくさいし、ということで、手軽に利用できそうな、Elastic Common Schema(ECS)を利用することにしました。jarファイルを追加して、log4j2.xmlを数行変えるだけで利用できるので、導入はかなり楽でした。

という感じで、audit.log、searchlog.log、fess-urls.logは今回の対象ではないので、それ以外のfess*.logは次のバージョンからJSON形式がデフォルトになります。