Planen eines Indexers in Azure AI Search

Indexer können so konfiguriert werden, dass sie nach einem Zeitplan ausgeführt werden, wenn Sie die schedule-Eigenschaft festlegen. Fälle, in denen das Festlegen eines Zeitplans für einen Indexer nützlich ist:

  • Die Quelldaten ändern sich im Lauf der Zeit, und der Suchindexer soll die Unterschiede automatisch verarbeiten.
  • Quelldaten sind sehr groß, und Sie benötigen einen wiederkehrenden Zeitplan, um alle Inhalte indizieren zu können.
  • Ein Index wird aus mehreren Quellen mit mehreren Indexern aufgefüllt, und Sie möchten die Aufträge auflisten, um Konflikte zu reduzieren.

Wenn die Indizierung im typischen 2-Stunden-Verarbeitungsfensternicht abgeschlossen werden kann, können Sie die Ausführung des Indexers für eine 2-Stunden-Zeit planen, um ein großes Datenvolumen zu durchlaufen. Solange Ihre Datenquelle Änderungserkennungslogik unterstützt, können Indexer automatisch an der Stelle aufnehmen, an der sie bei jeder Ausführung aufgehört haben.

Sobald sich ein Indexer in einem Zeitplan befindet, verbleibt er im Zeitplan, bis Sie das Intervall oder die Startzeit löschen bzw. disabled auf „true“ festlegen. Das Verlassen des Indexers in einem Zeitplan, wenn nichts verarbeitet werden kann, wirkt sich nicht auf die Systemleistung aus. Die Überprüfung auf geänderte Inhalte ist ein relativ schneller Vorgang.

Voraussetzungen

  • Ein gültiger Indexer, der mit einer Datenquelle und einem Index konfiguriert ist.

  • Änderungserkennung in der Datenquelle. Azure Storage und SharePoint verfügen über eine integrierte Änderungserkennung. Andere Datenquellen wie Azure SQL und Azure Cosmos DB müssen manuell aktiviert werden.

Zeitplandefinition

Ein Zeitplan ist Teil der Indexerdefinition. Wenn die schedule-Eigenschaft ausgelassen wird, wird der Indexer nur bei Bedarf ausgeführt. Die Eigenschaft hat zwei Teile.

Eigenschaft Beschreibung
„interval“ (erforderlich) Die Zeitspanne zwischen dem Start von zwei aufeinanderfolgenden Indexerausführungen. Das kürzeste zulässige Zeitintervall ist 5 Minuten und das längste 1.440 Minuten (24 Stunden). Es muss als XSD-Wert „dayTimeDuration“ formatiert sein (eine eingeschränkte Teilmenge eines ISO 8601-Zeitwerts).

Das Muster dafür ist: P(nD)(T(nH)(nM)).

Beispiele: PT15M = alle 15 Minuten, PT2H = alle 2 Stunden.
„startTime“ (optional) Die Startzeit wird in koordinierter Weltzeit (UTC) angegeben. Wenn kein Wert angegeben wird, wird die aktuelle Uhrzeit verwendet. Diese Zeitangabe kann in der Vergangenheit liegen. In diesem Fall wird die erste Ausführung so geplant, als wäre der Indexer seit der ursprünglichen Startzeit kontinuierlich ausgeführt worden.

Das folgende Beispiel ist ein Zeitplan, der am 1. Januar um Mitternacht beginnt und alle 2 Stunden ausgeführt wird.

{
    "dataSourceName" : "hotels-ds",
    "targetIndexName" : "hotels-idx",
    "schedule" : { "interval" : "PT2H", "startTime" : "2024-01-01T00:00:00Z" }
}

Konfigurieren eines Zeitplans

Zeitpläne werden in einer Indexerdefinition angegeben. Zum Einrichten eines Zeitplans können Sie Azure-Portal, REST-APIs oder ein Azure SDK verwenden.

  1. Melden Sie sich beim Azure-Portal an, und öffnen Sie die Übersichtsseite des Suchdiensts.
  2. Wählen Sie im linken Navigationsbereich Indexer aus.
  3. Öffnen Sie einen Indexer.
  4. Wählen Sie Einstellungen aus.
  5. Scrollen Sie nach unten zu Zeitplan, und wählen Sie Stündlich, Täglich oder Benutzerdefiniert aus, um ein bestimmtes Datum, eine bestimmte Uhrzeit oder ein benutzerdefiniertes Intervall festzulegen.

Wechseln Sie oben im Index zur Registerkarte Indexerdefinition (JSON), um die Zeitplandefinition im XSD-Format anzuzeigen.

Häufig gestellte Fragen zum Planungsverhalten

Kann ich mehrere Indexeraufträge parallel ausführen?

Sie können mehrere Indexer gleichzeitig ausführen, die einzelnen Indexer sind aber jeweils eine Einzelinstanz. Sie können nicht zwei Kopien desselben Indexers gleichzeitig ausführen.

Für die textbasierte Indizierung kann der Planer so viele Indexeraufträge starten, wie der Suchdienst unterstützt, was durch die Anzahl der Sucheinheiten bestimmt wird. Wenn der Dienst beispielsweise drei Replikate und vier Partitionen aufweist, können Sie zwölf Indexeraufträge gleichzeitig ausführen, unabhängig davon, ob sie bedarfsgesteuert oder nach einem Zeitplan eingeleitet werden.

Indexer für die skillbasierte Indizierung werden in einer spezifischen Ausführungsumgebung ausgeführt. Aus diesem Grund hat die Anzahl der Diensteinheiten keinen Einfluss auf die Anzahl der Skill-basierten Indexeraufträge, die Sie ausführen können. Mehrere skillbasierte Indexer können parallel ausgeführt werden. Dies hängt jedoch von der Verfügbarkeit des Inhaltsprozessors innerhalb der Ausführungsumgebung ab.

Beginnen geplante Aufträge immer zum festgelegten Zeitpunkt?

Indexerprozesse können in die Warteschlange gestellt werden und beginnen je nach Verarbeitungslast und anderen Faktoren möglicherweise nicht genau zum geplanten Zeitpunkt. Wenn ein Indexer beispielsweise noch ausgeführt wird, wenn seine nächste geplante Ausführung starten soll, wird die anstehende Ausführung auf den nächsten geplanten Zeitpunkt verschoben, damit der aktuelle Auftrag abgeschlossen werden kann.

Betrachten wir ein Beispiel, um dies zu konkreter veranschaulichen. Angenommen, Sie haben einen Indexerzeitplan mit dem Intervall „Stündlich“ und der Startzeit „1. Januar 2024 um 8:00:00 Uhr (UTC)“ konfiguriert. Folgendes könnte passieren, wenn eine Indexerausführung länger als eine Stunde dauert:

  1. Die erste Indexerausführung beginnt am 1. Januar 2024 um ca. 8:00 Uhr (UTC) oder genau um 8:00 Uhr (UTC). Angenommen, diese Ausführung dauert 20 Minuten (oder hat eine andere Dauer unter 1 Stunde).

  2. Die zweite Ausführung beginnt am 1. Januar 2024 um ca. 9:00 Uhr (UTC) oder genau um 9:00 Uhr (UTC). Angenommen, diese Ausführung dauert 70 Minuten – also mehr als einer Stunde – und wird erst gegen 10:10 Uhr (UTC) abgeschlossen.

  3. Der Start der dritten Ausführung ist für 10:00 Uhr (UTC) geplant, aber zu diesem Zeitpunkt ist die vorherige Ausführung noch nicht abgeschlossen. Diese geplante Ausführung wird dann übersprungen. Die nächste Ausführung des Indexers startet somit erst um 11:00 Uhr (UTC).

Hinweis

Wenn Sie strenge Anforderungen an die Indexerausführung haben, die zeitempfindlich sind, sollten Sie ggf. das Push-API-Modell verwenden, damit Sie die Indizierungspipeline direkt steuern können.

Was geschieht, wenn die Indizierung wiederholt im selben Dokument fehlschlägt?

Wenn ein Indexer auf einen bestimmten Zeitplan festgelegt ist, im gleichen Dokument aber wiederholt ein Fehler auftritt, wird der Indexer in selteneren Intervallen ausgeführt (bis hin zum maximalen Intervall von mindestens einmal in 2 Stunden oder 24 Stunden, abhängig von den verschiedenen Implementierungsfaktoren), bis die Ausführung fehlerfrei verläuft. Wenn Sie denken, dass Sie das zugrunde liegende Problem behoben haben, können Sie den Indexer manuell ausführen. Wenn die Indizierung dann erfolgreich ausgeführt wird, wird der Indexer auf den regulären Zeitplan zurückgesetzt.

Nächste Schritte

Für Indexer, die nach einem Zeitplan ausgeführt werden, können Sie Vorgänge überwachen, indem Sie den Status des Suchdiensts abrufen, oder detaillierte Informationen abfragen, indem Sie die Ressourcenprotokollierung aktivieren.