Erkennung von Änderungen und Löschungen mit Indexern für Azure Storage in Azure AI Search
Nachdem ein erster Suchindex erstellt wurde, sollen nachfolgende Indexeraufräge vielleicht nur neue und geänderte Dokumente aufnehmen. Bei indizierten Inhalten, die aus Azure Storage stammen, erfolgt die Änderungserkennung automatisch, da Indexer das letzte Update mithilfe der integrierten Zeitstempel für Objekte und Dateien in Azure Storage nachverfolgen.
Die Änderungserkennung ist eine Standardeinstellung, die Erkennung von Löschungen hingegen nicht. Ein Indexer verfolgt das Löschen von Objekten in Datenquellen nicht nach. Um verwaiste Suchdokumente zu vermeiden, können Sie eine Strategie des „vorläufigen Löschens“ implementieren, die dazu führt, dass Suchdokumente zuerst gelöscht werden, während in einem zweiten Schritt physisch in Azure Storage gelöscht wird.
Es gibt zwei Möglichkeiten, die Strategie des vorläufigen Löschens zu implementieren:
- Natives vorläufiges Löschen von Blobs (Vorschau), gilt nur für Blob Storage
- Softes Löschen mit benutzerdefinierten Metadaten
Die Löscherkennungsstrategie sollte bereits bei der ersten Indizierungsausführung angewendet werden. Wenn Sie die Löschrichtlinie vor der ersten Ausführung nicht eingerichtet haben, verbleiben alle Dokumente, die vor der Implementierung der Richtlinie gelöscht wurden, in Ihrem Index, auch wenn Sie die Richtlinie später dem Indexer hinzufügen und zurücksetzen. Wenn dies der Fall ist, wird empfohlen, einen neuen Index mithilfe eines neuen Indexers zu erstellen, um sicherzustellen, dass die Löschrichtlinie von Anfang an vorhanden ist.
Voraussetzungen
Verwenden eines Azure Storage-Indexers für Blob Storage, Table Storage, File Storage oder Data Lake Storage Gen2
Verwenden Sie konsistente Dokumentschlüssel und eine konsistente Dateistruktur. Das Ändern von Dokumentschlüsseln oder Verzeichnisnamen und Pfaden (gilt für ADLS Gen2) unterbricht die internen Nachverfolgungsinformationen, die von Indexern verwendet werden, um zu wissen, welcher Inhalt indiziert und wann er zuletzt indiziert wurde.
Hinweis
ADLS Gen2 ermöglicht das Umbenennen von Verzeichnissen. Wenn ein Verzeichnis umbenannt wird, werden die Zeitstempel für die Blobs in diesem Verzeichnis nicht aktualisiert. Demzufolge werden diese Blobs vom Indexer nicht neu indiziert. Wenn die Blobs in einem Verzeichnis nach einer Umbenennung des Verzeichnisses neu indiziert werden müssen, da sie nun über neue URLs verfügen, müssen Sie den LastModified
-Zeitstempel für alle Blobs im Verzeichnis aktualisieren, damit der Indexer erkennt, dass diese bei einer zukünftigen Ausführung neu indiziert werden müssen. Die virtuellen Verzeichnisse in Azure Blob Storage können nicht geändert werden, sodass bei ihnen dieses Problem nicht auftritt.
Natives vorläufiges Löschen von Blobs
Bei diesem Ansatz zur Erkennung von Löschvorgängen ist Azure AI Search auf die Funktion "Soft Delete" (1) in Azure Blob Storage angewiesen, um festzustellen, ob Blobs in den Zustand "Soft Delete" übergegangen sind. Wenn Blobs in diesem Zustand erkannt werden, verwendet ein Suchindexer diese Informationen, um das entsprechende Dokument aus dem Index zu entfernen.
Anforderungen für natives vorläufiges Löschen
Blobs müssen sich in einem Azure Blob Storage-Container befinden. Die native Richtlinie Azure KI-Suche für vorläufiges Löschen von Blobs wird für Blobs in ADLS Gen2 oder Azure Files nicht unterstützt.
Dokumentschlüssel für die Dokumente in Ihrem Index müssen die entweder einer Blobeigenschaft oder Blobmetadaten wie „metadata_storage_path“ zugewiesen werden.
Sie müssen eine Preview-REST-API wie
2024-05-01-preview
oder die Indexerkonfiguration für die Datenquelle im Azure-Portal verwenden, um die Unterstützung für vorläufiges Löschen zu konfigurieren.Die Blobversionsverwaltung darf im Speicherkonto nicht aktiviert werden. Andernfalls wird natives vorläufiges Löschen nicht unterstützt.
Konfigurieren des nativen vorläufigen Löschens
Legen Sie, wenn Sie in Blobspeicher bei entsprechenden Bedarf das vorläufige Löschen aktivieren, für die Aufbewahrungsrichtlinie einen Wert fest, der wesentlich höher ist als der Intervallzeitplan Ihres Indexers. Wenn ein Problem beim Ausführen des Indexers vorliegt oder eine große Anzahl von Dokumenten indiziert werden muss, steht dem Indexer viel Zeit für die endgültige Verarbeitung der vorläufig gelöschten Blobs zur Verfügung. Azure AI Search Indexer löschen ein Dokument nur dann aus dem Index, wenn sie das Blob verarbeiten, während es sich im Zustand "soft deleted" befindet.
Legen Sie in Azure AI Search eine native Richtlinie zur Erkennung des weichen Löschens von BLOBs für die Datenquelle fest. Sie können dazu entweder das Azure-Portal oder eine Preview-REST-API (2024-05-01-preview
) verwenden. In den folgenden Anweisungen wird erläutert, wie Sie die Richtlinie zur Erkennung von Löschungen im Azure-Portal oder über REST-APIs einstellen.
Melden Sie sich beim Azure-Portal an.
Gehen Sie auf der Übersichtsseite des Azure AI Search-Dienstes zu Neue Datenquelle, einem visuellen Editor zum Festlegen einer Datenquellendefinition.
Im folgenden Screenshot sehen Sie, wo Sie dieses Feature im Azure-Portal finden.
Füllen Sie im Formular Neue Datenquelle die erforderlichen Felder aus, aktivieren Sie das Kontrollkästchen Löschen nachverfolgen, und wählen Sie Vorläufigen Löschen von Blobs aus. Klicken Sie dann auf Speichern, um das Feature bei der Erstellung der Datenquelle zu aktivieren.
Erneutes Indizieren nicht gelöschter Blobs mithilfe von nativen Richtlinien für vorläufiges Löschen
Wenn Sie einen vorläufig gelöschten Blob im Blobspeicher wiederherstellen, wird er vom Indexer nicht immer neu indiziert. Das liegt daran, dass der Indexer den LastModified
-Zeitstempel des Blobs verwendet, um festzustellen, ob eine Indizierung erforderlich ist. Wenn ein vorläufig gelöschtes Blob wiederhergestellt wird, wird sein LastModified
-Zeitstempel nicht aktualisiert. Falls der Indexer bereits Blobs mit aktuelleren LastModified
-Zeitstempeln verarbeitet hat, wird das wiederhergestellte Blob nicht neu indiziert.
Um sicherzustellen, dass ein wieder hergestelltes Blob neu indiziert wird, müssen Sie den LastModified
-Zeitstempel des Blobs aktualisieren. Eine Möglichkeit hierfür besteht darin, die Metadaten des Blobs erneut zu speichern. Sie müssen die Metadaten nicht ändern, aber durch das erneute Speichern der Metadaten wird der LastModified
-Zeitstempel des Blobs aktualisiert, sodass der Indexer weiß, dass er ihn neu indizieren muss.
Strategie für vorläufiges Löschen mit benutzerdefinierten Metadaten
Diese Methode verwendet die benutzerdefinierten Metadaten einer Datei, um anzuzeigen, ob ein Suchdokument aus dem Index entfernt werden soll. Dies erfordert zwei separate Aktionen: Zunächst wird das Suchdokument aus dem Index und dann die Datei in Azure Storage gelöscht.
Dieses Feature ist allgemein verfügbar.
Sowohl bei Azure Storage als auch bei Azure AI Search sind einige Schritte zu befolgen, aber es gibt keine weiteren Abhängigkeiten von Funktionen.
Fügen Sie der Datei in Azure Storage ein benutzerdefiniertes Metadaten-Schlüssel-Wert-Paar hinzu, um anzugeben, dass die Datei zum Löschen gekennzeichnet ist. Sie können die Eigenschaft z. B. „IsDeleted“ nennen und auf FALSE festlegen. Wenn Sie die Datei löschen möchten, ändern Sie sie in TRUE.
Bearbeiten Sie in Azure AI Search die Datenquellendefinition, um eine Eigenschaft „dataDeletionDetectionPolicy“ einzufügen. Bei der folgenden Richtlinie wird eine Datei beispielsweise als gelöscht angesehen, wenn ihre Metadateneigenschaft
IsDeleted
den Werttrue
aufweist:PUT https://[service name].search.windows.net/datasources/file-datasource?api-version=2024-07-01 { "name" : "file-datasource", "type" : "azurefile", "credentials" : { "connectionString" : "<your storage connection string>" }, "container" : { "name" : "my-share", "query" : null }, "dataDeletionDetectionPolicy" : { "@odata.type" :"#Microsoft.Azure.Search.SoftDeleteColumnDeletionDetectionPolicy", "softDeleteColumnName" : "IsDeleted", "softDeleteMarkerValue" : "true" } }
Führen Sie den Indexer aus. Nachdem der Indexer die Datei verarbeitet und das Dokument aus dem Suchindex gelöscht hat, können Sie die physische Datei in der Azure Storage löschen.
Erneutes Indizieren nicht gelöschter Blobs und Dateien
Sie können ein weiches Löschen rückgängig machen, wenn die ursprüngliche Quelldatei noch physisch in Azure Storage vorhanden ist.
Ändern Sie den
"softDeleteMarkerValue" : "false"
für das Blob oder die Datei in Azure Storage.Überprüfen Sie den
LastModified
-Zeitstempel des Blobs oder der Datei, um ihn so zu ändern, dass er aktueller als die letzte Indexerausführung ist. Sie können eine Aktualisierung des aktuellen Datums und der aktuellen Uhrzeit erzwingen, indem Sie die vorhandenen Metadaten erneut speichern.Führen Sie den Indexer aus.