Fessでの複数の接続先対応

現状、ES_HTTP_URLには1つの接続先しかかけないのだけど、そのうち、複数の接続先対応をしないとな…と思い放置していたのですが、フォーラムでElasticsearchのクラスタのコーディネートノードが複数いる場合にどうするのだ?みたいな話が上がったので、対応することにした。商用サポートの場合だと、ほとんどの場合でFessとElasticsearchが相乗りしている状態なので、この要件の優先度が上がらなかった。

Fess 14.1.1からES_HTTP_URLに

ES_HTTP_URL=http://es01:9200,http://es02:9200

みたいにカンマ区切りで記述すれば、ラウンドロビンでアクセスするようになります。アクセスに失敗した場合は、他の利用可能なサーバーにリトライします。失敗したサーバーはデフォルトでは10秒後にアクセスできれば復帰します。

この辺の処理は、Fesen HttpClientで対応しているのだけど、問題があれば、発生ベースで対応していこうかなと…。という感じで、複数接続ができるようになる予定です。

Fess 14.1.0のリリース

Fess 14.1.0をリリースしました。今回の主な変更は、検索クエリーまわりの実装をリファクタリングしたことと、fess-urls.logのログファイルが追加されたことでしょうか。

#2631はプラグインとかでも実装レベルで、利用している検索エンジンの情報が取得できるようにしました。fess-ds-〜などで、検索エンジンを識別できるようになりました。

#2634は組み込みOpenSearchが利用するモジュールの参照の仕方をプラグインに合わせるようにしました。システムクラスローダーで読み込むと、いろいろと制約があるので、プラグインと同じようにしました。

#2637#2638はクエリーまわりのリファクタリングです。今までは、QueryHelperをカスタマイズする必要がありましたが、これを変更するのはなかなか大変な作業になっていました。なので、この辺の実装をカスタマイズしやすいように変更しました。これにより、ベクトル検索的な機能も組み込みやすくなったと思います。

#2639はプラグインとかで、audit.logにログイン情報を出力できるようにするための実装上の改善です。

#2640はfess-urls.logを追加しました。fess-crawler.logにはクロール時のログがいろいろと出力されていますが、どこにどれだけ時間がかかっているのか?というのをfess-urls.logに出力するようにしました。チューニングする際などに、遅い部分の特定とかに利用できると思います。

#2641はfess-urls.logに出力するための時間計測情報を受け渡すために、DataStoreの実装を変更しました。なので、fess-ds-〜は14.0系とは互換性がなくなっています。(いつもは過去バージョンのも使えるケースがありましたが、14.0と14.1ではfess-ds-〜に互換性がなくなっています)

#2642はFess単体でもSSLを利用できるようにしました。Apacheやnginxなどなくても、httpsでのアクセスができるようになります。

#2645はPythonJobでPythonプログラムの実行時に環境変数で、SESSION_IDなどを渡すようにしました。(PythonJobを使っている人はいない気がしますが…)

という感じで、何かあれば、フォーラムをご利用ください。

fess-urls.logを追加

Fess 14.1では、fess-urls.logというログファイルを追加する予定です。今まで、1つのクロールでどれくらいの時間がかかっているか?がちょっとわかりにくいというのがあったのですが、1つのクロールでどこでどれくらい時間がかかるのか?がわかるようにfess-urls.logに出力するようになります。内容はLTSV形式で出力されます。少なくても、ウェブとファイルシステムのクロールは、出力される予定ですが、データストアクロールは仕組みが異なるので、データストアはそれぞれの実装によることになるので、順番に実装していく予定です。という感じで、クロールのチューニングがしやすくなるかなと考えています。