Adobe Experience Manager as a Cloud Serviceのカスタム Oak インデックスに対する「インデックスが検出されないクエリ」アラート
この記事では、Adobe Experience Manager as a Cloud Serviceで「インデックスなしでクエリが検出されました」アラートを解決する方法について説明します。この方法では、カスタム Oak インデックス定義を検証および更新して、クエリがトラバーサルにフォールバックするのではなく、目的のインデックスを使用するようにします。
説明 description
環境
Adobe Experience Manager as a Cloud Service(すべてのバージョン)
問題/症状
-
AEMのカスタム SQL-2 クエリは、新しいカスタム Oak インデックスのデプロイ中に、「インデックスなしでクエリが検出されました」アラートをトリガーします。
-
クエリには次のものが含まれます。
- ノードの種類:
cq:Page /content/.../newsなどの特定のコンテンツパスでのパス制限- フィルター:
jcr:content/cq:tags - 並べ替え:
jcr:content/publishedDate(降順) - 明示的なインデックスタグ:
customNewsLucene
- ノードの種類:
-
クエリは次のようになります。
select [ jcr:path] , [ jcr:score] , * from [ cq:Page] as a
where [ jcr:content/cq:tags] = '/news'
order by [ jcr:content/publishedDate] desc
option(index tag [ customNewsLucene] )
- このアラートは、Oak/Lucene インデックスが、クエリで定義されているプロパティの制限と並べ替え順序の両方を満たすことができないことを示します。
- その結果、Oakはトラバーサルにフォールバックし、クエリのパフォーマンスに悪影響を与える可能性があります。
原因
「Query Without Index Detected」アラートは、クエリのフィルターと並べ替え条件が、使用可能なOak/Lucene インデックスによって完全に満たされていない場合に発生します。 これは、カスタムインデックスがまだデプロイされていないか、完全に使用できない場合、またはクエリの要件に一致しない場合に発生する可能性があります。
解決策 resolution
問題を解決するには、次の手順に従います。
-
AEM as a Cloud Service Developer Consoleを開き、Query Performance Toolを使用します。
-
影響を受けるクエリを実行するか、説明を選択して、どのインデックスが選択されているかを確認します。
-
クエリで目的のカスタムインデックスが使用されないか、プランにトラバーサルが表示される場合は、カスタムインデックス定義を確認します。 クエリの要件をサポートしていることを確認します。
- ノードの種類:
cq:Page - プロパティの制限:
jcr:content/cq:tags - 降順の並べ替えの順序付きプロパティ:
jcr:content/publishedDate - パス制限:
/content/.../newsなどの関連するコンテンツパス - インデックス タグ:
customNewsLucene。クエリの明示的なインデックス タグと一致します
- ノードの種類:
-
Cloud Managerを使用して、更新されたインデックス定義をデプロイします。 インデックスの更新が完了するのを待ってから、クエリを検証します。
-
実行プランが意図したカスタムインデックスを使用し、クエリの制限と順序を処理し、トラバーサルを表示しないことを確認するには、クエリパフォーマンスツールを使用します。
-
オプションで、アクションセンターのクエリを数日間監視して、インデックスが検出されない新しい クエリ アラートが表示されるかどうかを確認します。
-
今後インデックスを変更する場合は、実稼動デプロイメントの前に下位の環境でインデックスを検証します。 クエリパフォーマンスツールの 説明 機能を使用して、インデックスの選択を確認します。