Zmienianie i usuwanie wykrywania przy użyciu indeksatorów dla usługi Azure Storage w usłudze Azure AI Search

Po utworzeniu początkowego indeksu wyszukiwania możesz chcieć, aby kolejne zadania indeksatora pobierały tylko nowe i zmienione dokumenty. W przypadku indeksowanej zawartości pochodzącej z usługi Azure Storage wykrywanie zmian odbywa się automatycznie, ponieważ indeksatory śledzą ostatnią aktualizację przy użyciu wbudowanych sygnatur czasowych obiektów i plików w usłudze Azure Storage.

Mimo że wykrywanie zmian jest podane, wykrywanie usuwania nie jest. Indeksator nie śledzi usuwania obiektów w źródłach danych. Aby uniknąć oddzielonych dokumentów wyszukiwania, możesz zaimplementować strategię "usuwania nietrwałego", która powoduje najpierw usunięcie dokumentów wyszukiwania, a usunięcie fizyczne w usłudze Azure Storage następuje w drugim kroku.

Istnieją dwa sposoby implementowania strategii usuwania nietrwałego:

Wymagania wstępne

  • Używanie indeksatora usługi Azure Storage dla usługi Blob Storage, Table Storage, File Storage lub Data Lake Storage Gen2

  • Używaj spójnych kluczy dokumentów i struktury plików. Zmiana kluczy dokumentów lub nazw katalogów i ścieżek (dotyczy usługi ADLS Gen2) powoduje przerwanie wewnętrznych informacji śledzenia używanych przez indeksatory w celu określenia, która zawartość została zindeksowana i kiedy była ostatnio indeksowana.

Uwaga

Usługa ADLS Gen2 umożliwia zmianę nazw katalogów. Po zmianie nazwy katalogu znaczniki czasu dla obiektów blob w tym katalogu nie są aktualizowane. W rezultacie indeksator nie zindeksuje ponownie tych obiektów blob. Jeśli obiekty blob w katalogu mają zostać ponownie zindeksowane po zmianie nazwy katalogu, ponieważ mają teraz nowe adresy URL, należy zaktualizować LastModified znacznik czasu dla wszystkich obiektów blob w katalogu, aby indeksator wiedział, aby ponownie indeksował je podczas przyszłego uruchomienia. Nie można zmienić katalogów wirtualnych w usłudze Azure Blob Storage, więc nie mają tego problemu.

Natywne usuwanie nietrwałe obiektów blob

W przypadku tego podejścia do wykrywania usuwania usługa Azure AI Search zależy od natywnej funkcji usuwania nietrwałego obiektu blob w usłudze Azure Blob Storage w celu określenia, czy obiekty blob zostały przeniesione do stanu usunięcia nietrwałego. Po wykryciu obiektów blob w tym stanie indeksator wyszukiwania używa tych informacji do usunięcia odpowiedniego dokumentu z indeksu.

Wymagania dotyczące natywnego usuwania nietrwałego

  • Obiekty blob muszą znajdować się w kontenerze usługi Azure Blob Storage. Natywne zasady usuwania nietrwałego obiektu blob usługi Azure AI Search nie są obsługiwane w przypadku obiektów blob w usłudze ADLS Gen2 lub Azure Files.

  • Włącz usuwanie nietrwałe dla obiektów blob.

  • Klucze dokumentów dla dokumentów w indeksie muszą być mapowane na właściwość obiektu blob lub metadane obiektu blob, takie jak "metadata_storage_path".

  • Aby skonfigurować obsługę usuwania nietrwałego, musisz użyć interfejsu API REST (api-version=2023-11-01) lub nowszej wersji albo konfiguracji źródła danych indeksatora w witrynie Azure Portal.

  • Przechowywanie wersji obiektów blob nie może być włączone na koncie magazynu. W przeciwnym razie natywne usuwanie nietrwałe nie jest obsługiwane zgodnie z projektem.

Konfigurowanie natywnego usuwania nietrwałego

W usłudze Blob Storage podczas włączania usuwania nietrwałego zgodnie z wymaganiami ustaw zasady przechowywania na wartość znacznie wyższą niż harmonogram interwału indeksatora. Jeśli występuje problem z uruchomieniem indeksatora lub jeśli masz dużą liczbę dokumentów do indeksowania, indeksator ma dużo czasu, aby ostatecznie przetworzyć nietrwałe usunięte obiekty blob. Indeksatory usługi Azure AI Search spowodują usunięcie dokumentu z indeksu tylko wtedy, gdy obiekt blob jest w stanie usunięcia nietrwałego.

W usłudze Azure AI Search ustaw natywne zasady wykrywania nietrwałego usuwania obiektów blob w źródle danych. Możesz to zrobić w witrynie Azure Portal przy użyciu interfejsu API REST (api-version=2023-11-01). Poniższe instrukcje wyjaśniają, jak ustawić zasady wykrywania usuwania w witrynie Azure Portal lub za pośrednictwem interfejsów API REST.

  1. Zaloguj się w witrynie Azure Portal.

  2. Na stronie Azure AI usługa wyszukiwania Overview (Omówienie usługi Azure AI) przejdź do pozycji Nowe źródło danych , edytor wizualizacji umożliwiający określenie definicji źródła danych.

    Poniższy zrzut ekranu przedstawia lokalizację tej funkcji w portalu.

    Screenshot of data source configuration in Import Data wizard.

  3. W formularzu Nowe źródło danych wypełnij wymagane pola, zaznacz pole wyboru Śledź usunięcia i wybierz pozycję Natywna usuwanie nietrwałe obiektu blob. Następnie naciśnij pozycję Zapisz , aby włączyć funkcję tworzenia źródła danych.

    Screenshot of portal data source native soft delete.

Ponowne indeksowanie nieukończonych obiektów blob przy użyciu natywnych zasad usuwania nietrwałego

Jeśli przywrócisz nietrwały usunięty obiekt blob w usłudze Blob Storage, indeksator nie zawsze będzie go ponownie indeksować. Dzieje się tak, ponieważ indeksator używa sygnatury LastModified czasowej obiektu blob do określenia, czy indeksowanie jest potrzebne. Gdy obiekt blob usunięty nietrwało zostanie usunięty, jego LastModified sygnatura czasowa nie zostanie zaktualizowana, więc jeśli indeksator przetworzył już obiekty blob z nowszymi LastModified znacznikami czasu, nie zindeksuje ponownie nieukończonego obiektu blob.

Aby upewnić się, że nieukończony obiekt blob jest ponownie indeksowany, należy zaktualizować sygnaturę LastModified czasową obiektu blob. Jednym ze sposobów na to jest ponowne zapisanie metadanych tego obiektu blob. Nie musisz zmieniać metadanych, ale ponowne zapisanie metadanych spowoduje zaktualizowanie znacznika LastModified czasu obiektu blob, aby indeksator wiedział, aby go odebrał.

Strategia usuwania nietrwałego przy użyciu metadanych niestandardowych

Ta metoda używa niestandardowych metadanych, aby wskazać, czy dokument wyszukiwania powinien zostać usunięty z indeksu. Wymaga to dwóch oddzielnych akcji: usunięcie dokumentu wyszukiwania z indeksu, a następnie usunięcie pliku w usłudze Azure Storage.

Istnieją kroki, które należy wykonać zarówno w usłudze Azure Storage, jak i w usłudze Azure AI Search, ale nie ma innych zależności funkcji.

  1. W usłudze Azure Storage dodaj do pliku niestandardową parę klucz-wartość metadanych, aby wskazać, że plik jest oflagowany do usunięcia. Można na przykład nazwać właściwość "IsDeleted", ustawioną na false. Jeśli chcesz usunąć plik, zmień go na true.

  2. W usłudze Azure AI Search edytuj definicję źródła danych, aby uwzględnić właściwość "dataDeletionDetectionPolicy". Na przykład następujące zasady uznają plik za usunięty, jeśli ma właściwość IsDeleted metadanych o wartości 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. Uruchom indeksator. Gdy indeksator przetworzy plik i usunął dokument z indeksu wyszukiwania, możesz usunąć plik fizyczny w usłudze Azure Storage.

Ponowne indeksowanie nieukończonych obiektów blob i plików

Można cofnąć usuwanie nietrwałe, jeśli oryginalny plik źródłowy nadal istnieje fizycznie w usłudze Azure Storage.

  1. Zmień obiekt "softDeleteMarkerValue" : "false" blob lub plik w usłudze Azure Storage.

  2. Sprawdź znacznik czasu obiektu blob lub pliku LastModified , aby był nowszy niż ostatni przebieg indeksatora. Możesz wymusić aktualizację bieżącej daty i godziny przez zapisanie istniejących metadanych.

  3. Uruchom indeksator.

Następne kroki