Ändra och ta bort identifiering med hjälp av indexerare för Azure Storage i Azure AI Search

När ett första sökindex har skapats kanske du vill att efterföljande indexeringsjobb bara ska hämta nya och ändrade dokument. För indexerat innehåll som kommer från Azure Storage sker ändringsidentifiering automatiskt eftersom indexerare håller reda på den senaste uppdateringen med hjälp av de inbyggda tidsstämplarna för objekt och filer i Azure Storage.

Även om ändringsidentifiering är en given identifiering är borttagningsidentifiering inte det. En indexerare spårar inte borttagning av objekt i datakällor. För att undvika att ha överblivna sökdokument kan du implementera en strategi för mjuk borttagning som resulterar i att du tar bort sökdokument först, med fysisk borttagning i Azure Storage som ett andra steg.

Det finns två sätt att implementera en strategi för mjuk borttagning:

Förutsättningar

  • Använda en Azure Storage-indexerare för Blob Storage, Table Storage, File Storage eller Data Lake Storage Gen2

  • Använd konsekventa dokumentnycklar och filstruktur. Om du ändrar dokumentnycklar eller katalognamn och sökvägar (gäller för ADLS Gen2) bryts den interna spårningsinformation som används av indexerare för att veta vilket innehåll som indexerades och när det senast indexerades.

Kommentar

ADLS Gen2 tillåter att kataloger byts namn. När en katalog byter namn uppdateras inte tidsstämplarna för blobarna i katalogen. Det innebär att indexeraren inte indexerar om dessa blobar. Om du behöver att blobarna i en katalog indexeras om efter ett katalogbyte eftersom de nu har nya URL:er måste du uppdatera tidsstämpeln LastModified för alla blobar i katalogen så att indexeraren vet att indexera om dem under en framtida körning. Det går inte att ändra de virtuella katalogerna i Azure Blob Storage, så de har inte det här problemet.

Mjuk borttagning av intern blob

För den här metoden för borttagningsidentifiering är Azure AI Search beroende av den inbyggda funktionen för mjuk borttagning av blobar i Azure Blob Storage för att avgöra om blobar har övergått till ett mjukt borttaget tillstånd. När blobar identifieras i det här tillståndet använder en sökindexerare den här informationen för att ta bort motsvarande dokument från indexet.

Krav för intern mjuk borttagning

  • Blobbar måste finnas i en Azure Blob Storage-container. Den inbyggda principen för mjuk borttagning av azure AI Search-blobar stöds inte för blobar i ADLS Gen2 eller Azure Files.

  • Aktivera mjuk borttagning för blobar.

  • Dokumentnycklarna för dokumenten i indexet måste mappas till antingen en blobegenskap eller blobmetadata, till exempel "metadata_storage_path".

  • Du måste använda REST API (api-version=2023-11-01) eller nyare version, eller indexerarens datakällskonfiguration i Azure-portalen, för att konfigurera stöd för mjuk borttagning.

  • Blobversionshantering får inte aktiveras i lagringskontot. Annars stöds inte inbyggd mjuk borttagning av design.

Konfigurera intern mjuk borttagning

När du aktiverar mjuk borttagning enligt kraven i Blob Storage anger du kvarhållningsprincipen till ett värde som är mycket högre än indexerarens intervallschema. Om det uppstår ett problem med att köra indexeraren, eller om du har ett stort antal dokument att indexeras, finns det gott om tid för indexeraren att så småningom bearbeta de mjuka borttagna blobarna. Azure AI Search-indexerare tar bara bort ett dokument från indexet om det bearbetar bloben medan den är i ett mjukt borttaget tillstånd.

I Azure AI Search anger du en intern princip för identifiering av mjuk borttagning av blobar på datakällan. Du kan göra detta antingen från Azure-portalen med hjälp av REST API (api-version=2023-11-01). Följande instruktioner beskriver hur du anger borttagningsidentifieringsprincipen i Azure-portalen eller via REST-API:er.

  1. Logga in på Azure-portalen.

  2. På sidan Översikt över Azure AI tjänsten Search går du till Ny datakälla, ett visuellt redigeringsprogram för att ange en datakälladefinition.

    Följande skärmbild visar var du hittar den här funktionen i portalen.

    Screenshot of data source configuration in Import Data wizard.

  3. I formuläret Ny datakälla fyller du i de obligatoriska fälten, markerar kryssrutan Spåra borttagningar och väljer Mjuk borttagning av intern blob. Tryck sedan på Spara för att aktivera funktionen för att skapa datakälla.

    Screenshot of portal data source native soft delete.

Indexera om odefinierade blobar med inbyggda principer för mjuk borttagning

Om du återställer en mjuk borttagen blob i Blob Storage indexerar indexeraren inte alltid om den. Det beror på att indexeraren använder blobens tidsstämpel LastModified för att avgöra om indexering behövs. När en mjuk borttagen blob tas bort uppdateras inte tidsstämpeln LastModified , så om indexeraren redan har bearbetat blobar med nyare LastModified tidsstämplar indexerar den inte om den odefinierade bloben.

För att säkerställa att en odefinerad blob indexeras om måste du uppdatera blobens tidsstämpel LastModified . Ett sätt att göra detta är genom att återförsäljning av metadata för den bloben. Du behöver inte ändra metadata, men om du gör om metadata uppdateras blobens tidsstämpel LastModified så att indexeraren kan hämta den.

Strategi för mjuk borttagning med anpassade metadata

Den här metoden använder anpassade metadata för att ange om ett sökdokument ska tas bort från indexet. Det kräver två separata åtgärder: ta bort sökdokumentet från indexet, följt av filborttagning i Azure Storage.

Det finns steg att följa i både Azure Storage och Azure AI Search, men det finns inga andra funktionsberoenden.

  1. I Azure Storage lägger du till ett nyckel/värde-par för anpassade metadata i filen för att ange att filen har flaggats för borttagning. Du kan till exempel ge egenskapen namnet "IsDeleted", inställt på false. När du vill ta bort filen ändrar du den till true.

  2. I Azure AI Search redigerar du datakälldefinitionen så att den innehåller egenskapen "dataDeletionDetectionPolicy". Följande princip anser till exempel att en fil tas bort om den har en metadataegenskap IsDeleted med värdet true:

    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. Kör indexeraren. När indexeraren har bearbetat filen och tagit bort dokumentet från sökindexet kan du sedan ta bort den fysiska filen i Azure Storage.

Indexera om odefinierade blobar och filer

Du kan ångra en mjuk borttagning om den ursprungliga källfilen fortfarande finns fysiskt i Azure Storage.

  1. "softDeleteMarkerValue" : "false" Ändra på bloben eller filen i Azure Storage.

  2. Kontrollera blobens eller filens tidsstämpel LastModified för att göra den nyare än den senaste indexeringskörningen. Du kan framtvinga en uppdatering av aktuellt datum och tid genom att återförsäljning av befintliga metadata.

  3. Kör indexeraren.

Nästa steg