ハイライト
機能
- 複数の再インデックスモード: Full Reindex, Concurrent Reindex (Blue/Green), and Sync Reindex.
- 高可用性: セレクトモードによるインデックス再作成作業中もサービスを継続。
- System Configuration Options: デフォルトの再インデックス・モードを設定する。
- ユーザーインターフェースの強化: 関連するタイプのグループ化、人間にとって使いやすい名前。
- タイムスタンプの実装: Elasticsearchのすべてのドキュメントにはタイムスタンプが付与されています。
- リソース管理: Elasticsearchのコンカレントモードにおけるディスク容量の見積もり。
- エラー管理: コンカレント・リインデックスに失敗した場合、元のインデックスにフォールバックする。
能力
- Clean Slate Reindexing: Full Reindex mode deletes and recreates indexes.
- Parallel Index Creation: Concurrent mode creates a new index alongside the old one and populates it.
- 更新優先のアプローチ: 同期 モードでは、最初の削除を行わずに既存の文書を更新します。
- 設定のカスタマイズ: デフォルトの再インデックス・モードを設定する機能。
- 簡単な識別と操作: より良いナビゲーションのための改良されたユーザーインターフェース。
- Staleness Detection: タイムスタンプは、古くなった文書を識別するのに役立つ。
- Preventive Resource Management: ディスク容量が不足する可能性がある場合、ユーザーに警告を発する。
- Continuous Operation: インデックス再作成に問題が発生しても、システムは運転を継続する(コンカレント・モード)。
メリット(特典)
- ダウンタイムの削減: ユーザーは、再インデックス操作中もコンテンツの検索とアクセスを継続できる。
- 柔軟性: 管理者は、シナリオに最も適した再インデックス作成モードを選択できる。
- オペレーションの効率化: リソースの制約による潜在的な停止や減速を防ぎます。
- Efficient Resource Utilization: 高度な警告により、リソース不足によりシステムがクラッシュする可能性のある操作を防止(コンカレントモード使用時)。
コンテキスト
検索は、コンテンツや商品(今後は、 コンテンツ)を発見するための、現代のあらゆるサイトの基本的な機能である。
これを正しく行うには、コンテンツを(全文)検索用に最適化された特別なフォーマットで保存する必要がある。このフォーマットは、Elasticsearchのような検索エンジンの中にある、 検索インデックス と呼ばれる。 ウェブコンテンツ記事、オブジェクトエントリとそのカテゴリやタグのようなコンテンツ、ユーザー、組織などのような他のタイプは、デフォルトですべてLiferayでインデックス化されています。
検索インデックスは、 Search Bar を通してユーザーの検索を提供するためだけのものではありません。フードの下では、ユーザーがUI上やヘッドレスAPIを通してやりとりする、Liferayのすぐに使えるアプリケーションや機能の多くも動かしています。
変更を反映させ、データベースと検索インデックスが同期していることを確認するために、Liferayは コントロールパネル - 設定 - 検索 > インデックスアクションで reindex と呼ばれる操作を実行する機能を提供しています。
問題点
再インデックス
時間の経過とともに、検索インデックスはメンテナンスを必要とする。 Liferayの機能が進化するにつれて、アップグレードによってデータがインデックスされる方法が変更されたり、ステージングパブリケーションの失敗やLiferayとElasticsearch間の接続の停止によってインデックスデータが古くなったりすることがあります。
再インデックスの方法
検索インデックスの完全性を維持することは課題である。 インデックスの再作成は改善策ですが、Liferayの伝統的な "delete-first & index again"(後述)のアプローチは、リソースを大量に消費し、顕著なダウンタイムを引き起こし、ユーザーエクスペリエンスとシステム運用に悪影響を及ぼします。
ビジネスインパクト
- ユーザーの混乱: 従来の再インデックス作成方法では、大幅なダウンタイムが発生し、ユーザーが関連コンテンツに効率的にアクセスできなくなります。
- 運用上のオーバーヘッド: インデックス再作成作業は、最適化されていない場合、多大なリソースを消費し、システムの遅延や停止につながる可能性がある。
- データの完全性: 定期的かつ効率的な再インデックス作成が行われないと、検索インデックスに古いデータや無関係なデータが表示され、プラットフォームの信頼性が損なわれる可能性がある。
- スケーラビリティに関する懸念: データ量が増大するにつれ、高可用性モードを使用しないインデックス再作成の管理はますます困難になり、スケーラビリティに影響を与える可能性があります。
- 事業継続リスク: 古い検索インデックスやずれた検索インデックスは、検索機能に依存する重要な事業運営に支障をきたし、潜在的な収益損失につながる可能性がある。
- メンテナンス・コスト: 頻繁で非効率的な再インデックス作成は、メンテナンス・コストの増加につながる。
望ましい成果
目標は、ビジネス継続性と高可用性を提供するために、本番環境の検索およびインデックス作成機能への影響を最小限またはゼロに抑えて再インデックスを実行する方法を提供することであった。
私たちがしてきたこと
U98 からは、 two new reindex execution modes が Betaとして利用可能になる:
- コンカレント
- 同期
Liferay が Elasticsearch を検索エンジンとして使用している場合。
その利点と使用するタイミングを理解するために、 Full reindexがどのように機能するのか(デフォルトモードとして使用可能なままである)をまず復習しておこう。
コントロールパネル - 設定 - 検索 > U98の実行モードを持つインデックスアクション。
完全再インデックス・モード
つまり、アクションを実行するときに
-
Reindex All Search Indexes: インデックスが削除され(すべてのコンテンツ/データが消去され)、その後プロセスの最初に再作成され、コンテンツが再びインデックスされる;
-
Reindex Individual Types (つまり、ユーザー): 選択されたタイプに対応するドキュメントは、プロセスの最初にインデックスから削除され、その後、コンテンツは再びインデックスされます。
すべてのデプロイメントが破壊的な性質の悪影響の影響を等しく受けるわけではないので、デフォルトのままである。
同時再インデックス・モード
( Elasticsearch のみ)
プロセスの最初に、2つ目の新しい("green")インデックスが、最新のストレージ命令(別名、フィールドマッピング)で作成され、コンテンツがインデックス化される。
一方、現在のオリジナルの("blue")インデックスは、全作業を通じて使用され続け、高い可用性を提供する暫定的な検索に対応する。
更新(コンテンツの作成/更新/削除やユーザーのアクションに起因する)は、操作中に元のインデックスと新しいインデックスの両方に同時に送信される(これが concurrent の性質に由来する)。
新しいインデックスが作成されると、プラットフォームは元のインデックスを削除し、リクエスト(検索と書き込みの両方)を新しいインデックスに向ける。
同期再インデックス・モード
( Elasticsearch のみ)
一言で言えば、シンクの再インデックス・モードは、"index again & delete-last" 戦略に従う。 このモードは、インデックス内の文書を削除せずに更新することから始まる。 プロセスの最後に、DXP 7.4 U90からすべての文書に入力される タイムスタンプ
フィールドに従って、古くなった文書が削除されます。
インデックス・モードの比較
この比較は、さまざまなモード、その主な特徴、そしてどのような場合に使用することが推奨されるかを理解するためのものである。
Full |
Concurrent |
Sync |
|
---|---|---|---|
Feature Status |
GA |
|
|
Provides High-Availability |
|
☑ |
☑ |
Available with Action: |
☑ |
☑ |
☑ |
Available with Action: Reindex Single Type |
☑ |
|
☑ |
Available with Action: Reindex Spell-Check Dictionaries |
☑ |
|
|
Behavior: Index Deleted/Created |
☑ |
☑ |
|
Behavior: Field Mappings Updated |
☑ |
☑ |
|
Behavior: Documents Updated |
☑ |
☑ |
☑ |
Recommended After: Liferay Upgrades |
☑ |
☑ |
|
Recommended After: Elasticsearch Upgrades1 |
☑ |
☑ |
☑ |
Recommended After: Connection Outages |
|
|
☑ |
Recommended After: Other Uptime Search Issues |
|
☑ |
☑ |
1 7.xから8.xへ。 技術的には、 Full reindexが必要なのは、Liferayを新しい空のElasticsearchクラスタに接続するときだけです。 その他のケースでは、Elasticsearch が アップグレードされた場合 (従って、以前の Elasticsearch クラスタのインデックスデータもアップグレードされます)、 Sync reindex で十分です。
考察
コンカレント モード より多くの リソース (プライマリディスクスペース)が必要 Elasticsearch. TElasticsearchの空き容量が不足する事態を防ぐため、管理者ユーザはreindexを実行する際に、Elasticsearchで利用可能なディスク容量の見積もりが操作を完了するのに十分でない可能性がある場合、警告確認ダイアログが表示されます。
インデックスアクションの同時再インデックスモードで警告ダイアログが表示される。
その他の最新情報
実行モード・セレクタの他に、 インデックス・アクション のレイアウトが、視覚的にしっかりと刷新された:
-
再インデックスを実行する前に確認ダイアログが表示されるようになり、不用意に重作業を引き起こすことを防げるようになった:
インデックス・アクションの確認ダイアログ。
-
関連する個々のタイプはグループ化され、管理者が正しいタイプを以前よりも簡単に見つけられるように、(特にオブジェクト定義の場合)それぞれに(エントリー・クラス名の他に)人間にとって使いやすいローカライズされた名前も表示されます。
index.on.startup
が有効になっている場合(推奨されません)、 コントロールパネル - 設定 - システム設定 > 検索でデフォルトの再インデックスモードを設定することが可能です: Reindex Configuration、デフォルトは Full です。
システム設定のデフォルトの再インデックス実行モード設定。
どのようにしてきたか
トラブルシューティング/診断ポインタ、ログレベル、クラスなどを追加。 JCordsより LPS-192784:サポートの観点からカバーされると便利なものについてフィードバックを提供する
「最後に、何か問題が起きたときにどうなるかは、どこにも書かれていない。 例えば、コンカレント再インデックスに失敗した場合、システムは元のインデックスを使い続けるだけだと伝えるべきだ。"
デモ & その他のリソース
-
Concurrent (aka. Blue/Green ) Reindex (技術的な詳細を含む):
[ビデオはこちら]
-
Sync (別名. Soft ) Reindex (技術的な詳細を含む):
[ビデオはこちら]