Neuindizieren eines synchronen AEM Index | AEM, Oak
Beschreibung description
Umgebung
Adobe Experience Manager
Problem
Wie indiziere ich einen synchronen Oak-Index ordnungsgemäß neu, ohne Ausfallzeiten zu verursachen?
Auflösung resolution
Lösung
Neuindizieren eines synchronen Index durch einfaches Festlegen der reindex-Eigenschaft auf true führt zu einem synchronen Vorgang, der dazu führen kann, dass eine Oak-Instanz hängen bleibt.
Um dies zu vermeiden, senden Sie die Indizierung an einen Hintergrund-Thread.
Gehen Sie dazu wie folgt vor:
Schritt 1: Neuindizieren in einem Hintergrund-Thread
-
Legen Sie die folgenden Eigenschaften von fest CRXDE Lite in der Indexdefinition für den Eigenschaftenindex, der für die asynchrone Indizierung aktiviert werden soll:
code language-none /oak:index/property index reindex=true reindex-async=true
-
Um zu bestätigen, dass die oben genannten den Knoten aktualisieren, sollte
async="async-reindex"
gesetzt werden. -
Rufen Sie die
startPropertyIndexAsyncReindex
aufPropertyIndexAsyncReindex
MBean.Dadurch würde der Hintergrundauftrag gestartet, der nach solchen Indextypen suchen würde.
Nach dem Aufruf sollte eine Neuindizierung der Protokollzeile durchgeführt werden…
-
Sobald die Neuindizierung abgeschlossen ist, wird die Neuindizierungskennzeichnung auf false.
-
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 die
async="async-reindex"
wird entfernt, da dieser steuert, auf welchem Thread die Indizierung erfolgen soll.Die
reindex-async
-Eigenschaft ist nur ein Konfigurationsflag, das sich nicht automatisch ändert.Die Idee ist, dass Sie sie 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 Sie den Checkpoint für die Neuindizierung (nur AEM 6.2 und ältere Versionen).
Während des Prozesses der asynchronen Neuindizierung wird ein Repository-Checkpoint erstellt.
Nachdem die Indizierungsaufgabe abgeschlossen ist, muss sie wie unten beschrieben freigegeben werden, um eine reibungslose Revisionsbereinigung später sicherzustellen:
-
Öffnen Sie zunächst die CheckpointManager MBean:
-
Rufen Sie die
listCheckpoints()
Vorgang. -
Suchen Sie die Checkpoint-Zeile mit der
name=async-reindex
-Eigenschaft. -
Kopieren Sie den ID-Wert in die Zwischenablage:
Auf MongoMK sieht es in etwa so aus:
r1234567aaaa-0-1
Auf TarMK sieht es in etwa wie folgt aus:
6eac07d0-fe27-4d16-82f8-6d5da4cefd67
-
Öffnen Sie dann den
releaseCheckpoint()
-Vorgang. -
Fügen Sie die kopierte ID als p1 ein und klicken Sie auf Aufrufen.
-
Mit diesem Schritt wird der Checkpoint freigegeben.