Share via


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:

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 Azure AI Search-Blob-Richtlinie für weiche Löschungen wird für Blobs in ADLS Gen2 oder Azure Files nicht unterstützt.

  • Aktivieren von „Vorläufiges Löschen“ für Blobs.

  • 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 die REST-API (api-version=2023-11-01) oder neuere Version oder die Indexer-Datenquellenkonfiguration 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 dies entweder über die Azure-Portal mithilfe der REST-API (api-version=2023-11-01). In den folgenden Anweisungen wird erläutert, wie Sie die Richtlinie zur Erkennung von Löschungen im Azure-Portal oder über REST-APIs einstellen.

  1. Melden Sie sich beim Azure-Portal an.

  2. 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 sich dieses Feature im Portal befindet.

    Screenshot of data source configuration in Import Data wizard.

  3. 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.

    Screenshot of portal data source native soft delete.

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.

Sowohl bei Azure Storage als auch bei Azure AI Search sind einige Schritte zu befolgen, aber es gibt keine weiteren Abhängigkeiten von Funktionen.

  1. 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.

  2. 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 Wert true aufweist:

    PUT https://[service name].search.windows.net/datasources/file-datasource?api-version=2020-06-30
    {
        "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"
        }
    }
    
  3. 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.

  1. Ändern Sie den "softDeleteMarkerValue" : "false" für das Blob oder die Datei in Azure Storage.

  2. Ü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.

  3. Führen Sie den Indexer aus.

Nächste Schritte