Neuindizieren eines synchronen AEM Index | AEM, Oak

Um einen synchronen AEM-Index neu zu indizieren, können Sie einfach die Eigenschaft für die Neuindizierung auf "". Dies kann jedoch dazu führen, dass eine Oak-Instanz hängen bleibt. In diesem Fall müssen Sie die Indizierung an einen Hintergrund-Thread senden. In diesem Artikel wird erläutert, wie.

Beschreibung description

Umgebung

Adobe Experience Manager

Problem/Symptome

Wie indiziere ich einen synchronen Oak-Index ordnungsgemäß neu, ohne Ausfallzeiten zu verursachen?

Lösung resolution

Die Neuindizierung eines synchronen Index durch einfaches Festlegen der Eigenschaft für die Neuindizierung auf true führt zu einem synchronen Vorgang, der dazu führen kann, dass eine Oak-Instanz hängen bleibt.

Um diese Situation zu vermeiden, senden Sie die Indizierung an einen Hintergrund-Thread. Gehen Sie wie folgt vor:

Schritt 1: Neuindizieren in einem Hintergrund-Thread

  1. Legen Sie die folgenden Eigenschaften von CRXDE Lite in der Indexdefinition für den Eigenschaftsindex fest, der für die asynchrone Indizierung aktiviert werden soll:

    code language-none
    /oak:index/<property index>
    reindex=true
    reindex-async=true
    
  2. Um zu bestätigen, dass die oben genannten den Knoten aktualisieren, sollte async="async-reindex" gesetzt werden.

  3. Rufen Sie die startPropertyIndexAsyncReindex auf dem PropertyIndexAsyncReindex MBean auf.

    Dadurch wird der Hintergrundauftrag gestartet, mit dem nach derartigen Indizes gesucht wird.

    Nach dem Aufruf sollte die Protokollzeile „Eine Neuindizierung wird durchgeführt…“ angezeigt werden.

  4. Sobald die Neuindizierung abgeschlossen ist, wird das Neuindizierungs-Flag auf "".

  5. Führen Sie Schritt 3 erneut aus, um den Index auf einen Synchronisierungsindex zurückzusetzen. Wenn das asynchrone Flag nicht gelöscht wird, muss das MBean möglicherweise mehrmals aufgerufen werden (dies kann vorkommen, wenn Änderungen gleichzeitig diesen Index betreffen).

    Hinweis: Nur der async="async-reindex" wird entfernt, da dieser steuert, auf welchem Thread die Indizierung erfolgen soll.

    Die reindex-async-Eigenschaft ist nur ein Konfigurations-Flag, das sich nicht automatisch ändert.

    Die Idee ist, dass Sie es einmal für die spezifischen Indexdefinitionen festlegen, die alle zukünftigen Neuindizierungen steuern.

    Es wird dann erwartet, dass es dort drin bleibt und man es nicht mehr anfassen muss.

Schritt 2: Entfernen des Neuindizierungs-Checkpoint (nur AEM 6.2 und ältere Versionen)

Während des Prozesses der asynchronen Neuindizierung wird ein Repository-Checkpoint erstellt.
Sobald die Indizierungsaufgabe abgeschlossen ist, muss sie wie unten beschrieben freigegeben werden, um später eine reibungslose Revisionsbereinigung zu gewährleisten:

  1. Öffnen Sie zunächst das CheckpointManager-MBean:

    Auf MongoMK - /system/console/jmx/org.apache.jackrabbit.oak%3Aname%3DDocument+node+store+checkpoint+management%2Ctype%3DCheckpointManger

    In TarMK - /system/console/jmx/org.apache.jackrabbit.oak%3Aname%3DSegment+node+store+checkpoint+management%2Ctype%3DCheckpointManger

  2. Rufen Sie den listCheckpoints() auf.

  3. Suchen Sie die Checkpoint-Zeile mit der name=async-reindex-Eigenschaft.

  4. Kopieren Sie den ID-Wert in die Zwischenablage:

    Auf MongoMK sieht es in etwa wie folgt aus: r1234567aaaa-0-1

    Auf TarMK sieht es in etwa so aus: 6eac07d0-fe27-4d16-82f8-6d5da4cefd67

  5. Öffnen Sie dann den releaseCheckpoint()-Vorgang.

  6. Fügen Sie die kopierte ID als p1 ein und klicken Sie auf Invoke.

  7. Mit diesem Schritt wird der Checkpoint freigegeben.

recommendation-more-help
3d58f420-19b5-47a0-a122-5c9dab55ec7f