コンテンツ インデックス管理
検索インデックスは、検索、ダッシュボード、一部のマクロなど、Confluence サイト内のコンテンツに関する情報を表示するすべての場所で使用されます。検索インデックスは、次のもので構成されています。
- ページのテキスト、ブログ投稿、コメントなどのコンテンツを含むコンテンツ インデックス
- ページが最後に編集された日時など、各変更に関するデータを含む変更インデックス
これらのインデックスは、ユーザーがサイトで作業を完了すると自動的に更新されます。新しいページ、コメント、既存のページの編集などの変更は、各インデックスで即座に更新されるわけではありません。キューに入れられ、作業時にバックグラウンドで定期的にバッチ処理されます (5 秒に 1 回の頻度)。
Lucene (既定) と OpenSearch のどちらで実行する場合でも、インデックス作成プロセスはほぼ同じです。注目すべき違いの 1 つは、Lucene では新しく構築されたインデックスが Confluence によって他のノードに自動的に伝播される点です。
インデックス キューの表示
短期間にサイトに多数の変更を加えた場合、キューの処理に時間がかかる場合があります。
キューの内容を確認するには、次の手順を実行します。
- [管理] > [一般設定] > [コンテンツのインデックス作成] に移動します。
- [Content queue (コンテンツ キュー)] タブまたは [Change queue (変更キュー)] タブを選択します。
ここでは、キューに入っているアイテムの数、キューが最後に処理された時間、処理にかかった時間を見ることができます。この情報は、ユーザーが検索またはダッシュボードのアクティビティ フィードに関する問題を報告した場合のトラブルシューティングに役立ちます。
検索インデックスの再構築
ユーザーが検索、ダッシュボードのアクティビティ フィードに関する問題を報告した場合や、アップグレードの一部として求められた場合など、検索インデックスの再構築が必要になる場合があります。
スクリーンショット: 管理コンソール内の検索インデックスの UI 画面
次の検索インデックスを再構築するオプションがあります。
- サイト全体
- 1 つまたは複数のスペース
次のような場合は、スペースのインデックス再作成を実行する必要があります。
- 正確な課題と影響を受けるスペースを把握している
- サイト全体のインデックス再作成を分散させるか、重ならないよう調整したい
- サイトへのインポート後に、スペースのコンテンツ インデックスが破損している
- ページがあるスペースから別のスペースに移動され、その処理中にページのインデックスが破損している
次の場合にサイトのインデックス再作成を実行する必要があります。
- スペースのインデックスを再作成しても問題を解決できない
- ユーザーが見つからない、またはメンションできない
- スペースのインデックスを再作成するときに、管理者がターゲット スペースを見つけることができない。つまり、スペース ディレクトリのインデックスが破損している可能性がある
サイトまたはスペースの検索インデックスを再構築すると、コンテンツ インデックスと変更インデックスの両方が再構築されます。大規模なサイトでは時間がかかる場合があります。実行するインデックス再作成の種類を決めるときにも、これを考慮する必要があります。
スペースのインデックス再作成
1 つまたは複数のスペースのインデックスを再作成するには、次の手順を実行します。
- [管理] > [一般設定] > [コンテンツのインデックス作成] に移動します。
- [Spaces reindex (スペースのインデックス再作成)] の横にある [スペースの選択] を選択します。
- フィールドにスペース名を入力してスペースを検索し、インデックスを再作成するスペースを選択します。
- [再構築] を選択し、プロンプトに従ってインデックスの再構築を確認します。
スペースのインデックスを再作成している間、ターゲット スペースのすべてのノードで検索機能が使用できなくなります。これは Lucene と OpenSearch の両方に当てはまります。
サイトのインデックス再作成
サイト全体のインデックスを再作成するには、次の手順を実行します。
- [管理] > [一般設定] > [コンテンツのインデックス作成] に移動します。
- [サイトのインデックス再作成] の横にある [再構築] を選択し、プロンプトに従ってインデックスの再構築を確認します。
Confluence を Lucene (既定の検索エンジン) で実行している場合、サイトのインデックス再作成を実行している間、そのノードでは検索機能が使用できなくなります。これを軽減するには、「Confluence Data Center でダウンタイムなしでコンテンツ インデックスをゼロから再構築する方法」を参照してください。
Confluence を OpenSearch で実行している場合、検索機能はすべてのノードで引き続き使用できます。これは、サイトのインデックス再作成がブルーグリーン アプローチで行われるためです。つまり、既存のインデックスに影響を与えずに新しいインデックスに対してインデックス作成プロセスが実行されるのです。
インデックス再作成の進捗を追跡
インデックス再作成ジョブのステータスは [最近のアクティビティ] テーブルで確認できます。ジョブの詳細 (発生したエラーや問題を含む) については、テーブル行の端にある矢印を選択して、そのジョブの監査ログをご確認ください。
スクリーンショット: 管理コンソール内の検索インデックスの UI 画面
- [最近のアクティビティ] テーブル
- 特定のインデックス再作成ジョブの監査ログを参照
さらに詳細な情報は、atlassian-confluence-index.log
にある Confluence インデックス ログもご確認ください (これらのログへのアクセス方法は「Confluence ログを使用する」をご参照ください)。Confluence インデックス ログで確認できる詳細の例を次に示します。
進捗の更新
コンテンツのインデックス再作成はバッチで同時に実行されます。処理されたコンテンツの割合は、コンテンツがバッチ処理されるたびに定期的に表示されます。
2023-02-02 12:16:44,342 INFO [Indexer: 1] [confluence.internal.index.ConcurrentBatchIndexer] logProgress Re-index progress: 38 of 61. 62% complete. Memory usage: 1 GB free, 2 GB total
ただし、未処理のエラーが原因で、すべてのコンテンツのインデックス作成に成功するとは限らない場合があります。
未処理のエラー
発生したエラーが未処理であると、同じバッチのコンテンツに影響します。ただし、他のバッチでのコンテンツのインデックス作成には影響しません。未処理のエラーも記録されます。
未処理のエラーが見つかった場合は、インデックス再作成を再実行する前に、根本原因を見つけて問題を解決する必要があります。
2023-02-01 12:24:50,043 ERROR [Indexer: 1] [confluence.internal.index.ConcurrentBatchIndexer] lambda$null$2 An error occurred while re-indexing a batch. Only the particular batch which had an error occur will not be re-indexed correctly.
-- referer: http://localhost:8080/confluence/plugins/servlet/rebuildindex | url: /confluence/rest/prototype/latest/index/reindex | traceId: 0463502f0ab3faab | userName: admin
java.lang.RuntimeException: Some unhandled exception
....
インデックスの再作成が完了
進捗が 100% に達すると、インデックス再作成は完了です。
2023-02-02 12:16:44,553 INFO [Indexer: 1] [confluence.internal.index.ConcurrentBatchIndexer] logProgress Re-index progress: 100% complete. 61 items have been reindexed
未処理のエラーが原因で、すべてのコンテンツのインデックス再作成に成功するとは限らないことに留意してください。進捗は、実際にインデックス作成に成功したコンテンツの量ではなく、処理されたコンテンツの量を反映したものになります。
エンド ユーザーへの影響
ユーザーは引き続き Confluence を検索して使用できますが、とりわけサイトのインデックス再作成を実行する際に、パフォーマンスが低下する可能性があります。これは、インデックス再作成によってサーバーに負荷がかかるためです。
インデックス再作成には、数時間を要する場合があります。所要時間は、サイト上のページや添付ファイルの数、種類、サイズ、割り当てられたメモリ量、ディスクのスループットによって異なります。
非常に大規模なサイトがある場合、ユーザーへの影響を軽減する方法がいくつかあります。
- Confluence を 1 つのノードで実行している場合は、再構築の開始を週末または予定メンテナンスの時間枠内にします。
- Confluence をクラスターで実行している場合は、インデックスの再構築を行っているノードを、ロード バランサーから削除します。これにより、Confluence は新しいインデックスの再構築が完了するまで、引き続き既存のインデックスを使用します。伝播が完了した後に、プールにノードをもう一度追加できます。
検索インデックスをクラスターに伝播する (Lucene のみ該当)
サイトのインデックス再作成の場合、現在のノードで検索インデックスが再構築されると、インデックス ファイルがクラスター内の他のすべてのノードに自動的に伝播されます。
インデックス ファイルはクラスターに結合したノードにのみ伝播されます。Confluence がノードで実行されていない場合、インデックスはノードに伝播できません。
ノードが使用できなくなる、インデックスをコピーするためのディスク容量が不足しているなどの問題が発生すると、PROPAGATION FAILED
のようなエラー ステータスが表示されます。ジョブの監査ログにアクセスして、エラーの詳細情報を見つけてください。
スペースのインデックスを再作成する場合、検索インデックスはすべてのノードで同時に再構築されるため、ノードの伝播は必要ありません。
ディスク容量の要件
Confluence をクラスターで実行している場合、サイトのインデックス再作成を実行する前に、追加のインデックス再作成のスナップショットを格納するための十分な空き容量が共有ホーム ディレクトリにあることを確認してください。このスナップショットはノード伝播に必要です。
検索インデックスの場所
既定では、Confluence ではインデックス作成に Lucene を使用します。インデックスは <home-directory>/index
ディレクトリにあります。
Confluence をクラスターで実行している場合、Confluence インデックスの完全なコピーは各 Confluence ノードの <local-home>/index
ディレクトリに格納されます。ジャーナル サービスが各インデックスの同期状態を保持します。
何らかの事情により検索インデックスの内容を確認する必要がある場合は、インデックスを直接確認できるツールがあります。「Confluence Server および Data Center の検索インデックスの内容を表示する方法」を参照してください。
OpenSearchを使用する場合、インデックスは OpenSearch クラスターの外部で管理されます。「Confluence 向けに OpenSearch を設定する」を参照してください。
クラスターのインデックス復元
クラスターで Confluence を実行する場合は、サイトの検索インデックスのスナップショットが共有ホーム ディレクトリに保存されます。これらのスナップショットは、既定では 1 日 1 回実行する、Clean Journal Entries スケジュール ジョブで作成されます。
新しいノードを起動すると、Confluence は、インデックスが最新のものかチェックします。そうでない場合、共有ホーム ディレクトリから、復元スナップショットを要求します。スナップショットを利用できない場合は、実行しているノード (マッチング ビルド番号付き) からスナップショットを生成します。復元スナップショットがインデックス ディレクトリに展開されると、Confluence はスタートアップ プロセスを続行します。その後、ジャーナル サービスによって、インデックスを最新の状態にするために必要な追加の更新が行われます。
スナップショットが生成されない場合、あるいは時間内に受信されない場合は、既存のインデックス ファイルは削除され、Confluence はそのノードでインデックス再作成を実行します。インデックスが非常に大きい場合や、ファイル システムの速度が遅い場合、confluence.cluster.index.recovery.generation.timeout
システム プロパティを使用して、Confluence がスナップショットの生成を待機する時間を増やす必要がある場合があります。
インデックス復元はノードの起動時にのみ行われます。そのため、特定のクラスタ ノードのインデックスに問題が疑われる場合、ソノノードを再起動してインデックス復元をトリガーします。
インデックスを UI から手動で再構築する場合、インデックスの復元スナップショットは使用されません。再構築プロセスにおいて、クラスターの他のノードへの伝搬前に新規のスナップショットが生成されます。
インデックスのサイズを確認する
インデックスのサイズは 2 つの方法で測定できます。ディスク上のサイズを確認するか、ページ数とブログ数をインデックス内のコンテンツ量の大まかな指標として使用するかのいずれかです。
ディスク上の Lucene インデックスのサイズを確認する方法は以下のとおりです。
<local-home>/index
に移動します。- 該当するディレクトリのサイズを確認します。そのための方法は、使用しているオペレーティング システムによって異なります。
ディスク上の OpenSearch インデックスのサイズを確認するには、cat インデックス REST エンドポイント GET _cat/indices/<index>?v
を使用してください。詳細については、「cat インデックス」を参照してください。
インデックス内のページ数とブログ数を確認するには、次の手順に従います。
- [管理] > [一般設定] > [システム情報] に移動します。
- [Confluence 利用状況] セクションまで下にスクロールし、[コンテンツ (現在のバージョン)] の値を確認します。
トラブルシューティング
検索インデックスの再構築で問題が発生する場合は、以下を参照してください。
インデックスを再構築できない
Confluence UI からインデックスを再構築できない場合や、インデックスを再構築しても検索に問題がある場合は、インデックスの一からの再構築が必要となる場合があります。これを行う方法は、Confluence がクラスターで実行されているかどうかによって異なります。
コンテンツのインデックス作成ページにアクセスできない
コンテンツのインデックス作成ページが正しくロードされず、「インデックスの状態を確認できません。接続が切断されている可能性があるため、ページを更新してもう一度お試しください」というエラーが表示される場合、ブラウザを最新バージョンに更新してみてください。
インデックス再構築中のパフォーマンス低下
インデックスの再構築中に安定性の問題が発生した場合は、Confluence がインデックスの再構築に使用するスレッドの数を減らすことができます。reindex.thread.count
システム プロパティを設定して、使用できるスレッドの最大数を定義します。
reindex.thread.count
と index.queue.thread.count
の両方が設定されていない場合、インデックス再作成のスレッド数がその Confluence サーバー上の CPU 数に既定で設定されます。
インデックス再構築中のメモリ不足エラー
インデックスの再構築中にメモリ不足のエラーが発生する場合、Confluence で利用可能なヒープ メモリを増やすことで改善できる可能性があります。「Fix java.lang.OutOfMemoryError in Confluence (Confluence で java.lang.OutOfMemoryError を修正する)」をご覧ください。
再構築されたサイト インデックスをクラスター内の他のノードに伝播できなかった (Lucene のみ該当)
これは通常、各ノードのローカル ホーム ディレクトリにインデックスのコピーを 2 つ格納できるだけの空きディスク容量がない場合に起こります。伝播を再度行う方法については、「 Confluence Data Center 7.7 以降でインデックスの伝播に失敗した場合」を参照してください。