概要
Elasticsearch/OpenSearchコネクタは、ElasticsearchまたはOpenSearchクラスタからデータを取得して Fess のインデックスに登録する機能を提供します。
この機能には fess-ds-elasticsearch プラグインが必要です。
対応バージョン
Elasticsearch 7.x / 8.x
OpenSearch 1.x / 2.x
前提条件
プラグインのインストールが必要です
Elasticsearch/OpenSearchクラスタへの読み取りアクセスが必要です
クエリを実行できる権限が必要です
プラグインのインストール
方法1: JARファイルを直接配置
方法2: 管理画面からインストール
「システム」→「プラグイン」を開く
JARファイルをアップロード
Fess を再起動
設定方法
管理画面から「クローラー」→「データストア」→「新規作成」で設定します。
基本設定
| 項目 | 設定例 |
|---|---|
| 名前 | External Elasticsearch |
| ハンドラ名 | ElasticsearchDataStore / ElasticsearchListDataStore |
| 有効 | オン |
注釈
ElasticsearchListDataStore は ElasticsearchDataStore を拡張したハンドラで、取得したデータをファイルリストとして処理し、マルチスレッドでのインデックス登録をサポートします。 num_of_threads パラメーターでスレッド数を指定できます(デフォルト: 1)。
パラメーター設定
基本的な接続:
認証ありの接続:
パラメーター一覧
スクリプト設定
基本的なマッピング:
ネストしたフィールドへのアクセス:
利用可能なフィールド
source.<field_name>- Elasticsearchドキュメントの_sourceフィールドid- ドキュメントIDindex- インデックス名score- 検索スコアversion- ドキュメントバージョンseqNo- シーケンス番号primaryTerm- プライマリタームclusterAlias- クラスタエイリアス(クロスクラスタ検索時)hit- SearchHitオブジェクト(上級者向け)
クエリの設定
全ドキュメントの取得
デフォルトでは全ドキュメントが取得されます。 query パラメーターを指定しない場合、match_all が使用されます。
特定の条件でフィルタリング
範囲指定:
複数条件:
注釈
query パラメーターにはクエリ本体のみを指定します。外側の {"query":...} ラッパーは不要です。 また、ソートなどの検索レベルのオプションはこのパラメーターでは指定できません。
特定のフィールドのみ取得
fieldsパラメーターで取得フィールドを限定
すべてのフィールドを取得する場合は fields を指定しないか、空にします。
使用例
基本的なインデックスのクロール
パラメーター:
スクリプト:
認証付きクラスタからのクロール
パラメーター:
スクリプト:
複数インデックスからのクロール
パラメーター:
スクリプト:
OpenSearchクラスタのクロール
パラメーター:
スクリプト:
フィールドを限定してクロール
パラメーター:
スクリプト:
複数ホストでの負荷分散
パラメーター:
スクリプト:
トラブルシューティング
接続エラー
症状: Connection refused または No route to host
確認事項:
ホストURLが正しいか確認(プロトコル、ホスト名、ポート)
Elasticsearch/OpenSearchが起動しているか確認
ファイアウォール設定を確認
HTTPSの場合、証明書が有効か確認
認証エラー
症状: 401 Unauthorized または 403 Forbidden
確認事項:
ユーザー名とパスワードが正しいか確認
ユーザーに適切な権限があるか確認:
インデックスへの読み取り権限
スクロールAPIの使用権限
Elasticsearch Security(X-Pack)が有効な場合、適切に設定されているか確認
インデックスが見つからない
症状: index_not_found_exception
確認事項:
インデックス名が正しいか確認(大文字小文字を含む)
インデックスが存在するか確認:
ワイルドカードパターンが正しいか確認(例:
logs-*)
クエリエラー
症状: parsing_exception または search_phase_execution_exception
確認事項:
クエリJSONが正しいか確認
Elasticsearch/OpenSearchのバージョンに対応したクエリか確認
フィールド名が正しいか確認
クエリを直接Elasticsearch/OpenSearchで実行してテスト:
スクロールタイムアウト
症状: No search context found または Scroll timeout
解決方法:
scrollを長くする:sizeを小さくする:クラスタのリソースを確認
大量データのクロール
症状: クロールが遅い、またはタイムアウトする
解決方法:
sizeを調整(大きすぎると遅くなる):fieldsで取得フィールドを限定queryで必要なドキュメントのみフィルタリング複数のデータストアに分割(インデックス単位、時間範囲単位など)
メモリ不足
症状: OutOfMemoryError
解決方法:
sizeを小さくするfieldsで取得フィールドを限定Fess のヒープサイズを増やす
大きなフィールド(バイナリデータなど)を除外
SSL/TLS接続
自己署名証明書の場合
警告
本番環境では適切に署名された証明書を使用してください。
自己署名証明書を使用する場合、Java keystoreに証明書を追加:
クライアント証明書認証
クライアント証明書が必要な場合、追加のパラメーター設定が必要です。 詳細はElasticsearchクライアントのドキュメントを参照してください。
高度なクエリ例
集約を含むクエリ
注釈
query パラメーターはクエリ本体のみを受け付けます。集約(aggs)やソートなどの 検索レベルのオプションは指定できません。ドキュメントのみが取得されます。
スクリプトフィールド
注釈
Elasticsearch/OpenSearchのスクリプトフィールドは _source には含まれないため、 source.* プレフィックスではアクセスできません。スクリプトフィールドを使用する場合は、 hit オブジェクトから hit.getFields() 経由でアクセスする必要があります。
参考情報
データストアコネクタの概要 - データストアコネクタ概要
データベースコネクタ - データベースコネクタ
データストアクロール - データストア設定ガイド