Изменение и удаление обнаружения с помощью индексаторов для служба хранилища Azure в поиске ИИ Azure

После создания начального индекса поиска может потребоваться, чтобы для последующих заданий индексатора выбирались только новые и измененные документы. Для индексированного содержимого, полученного из служба хранилища Azure, обнаружение изменений происходит автоматически, так как индексаторы отслеживают последнее обновление с помощью встроенных меток времени для объектов и файлов в служба хранилища Azure.

Хотя обнаружение изменений является заданным, обнаружение удаления не является. Индексатор не отслеживает удаление объектов в источниках данных. Чтобы избежать потерянных документов поиска, можно реализовать стратегию "обратимого удаления", которая сначала приводит к удалению документов поиска, при этом физическое удаление выполняется служба хранилища Azure следующим шагом.

Существует два способа реализации стратегии обратимого удаления:

Стратегия обнаружения удаления должна применяться с самого первого запуска индексатора. Если вы не установили политику удаления до первоначального запуска, все документы, которые были удалены до реализации политики, останутся в индексе, даже если вы добавите политику в индексатор позже и сбросите ее. Если это произошло, рекомендуется создать новый индекс с помощью нового индексатора, гарантируя, что политика удаления выполняется с самого начала.

Необходимые компоненты

  • Использование индексатора служба хранилища Azure для хранилища BLOB-объектов, хранилища таблиц, файлового хранилища или Data Lake Storage 2-го поколения

  • Используйте согласованные ключи документов и структуру файлов. Изменение ключей документов или имен каталогов и путей (применяется к ADLS 2-го поколения) нарушает внутренние данные отслеживания, используемые индексаторами, чтобы узнать, какое содержимое индексировано, и когда он был последним индексирован.

Примечание.

ADLS 2-го поколения позволяет переименовать каталоги. При переименовании каталога метки времени для больших двоичных объектов в этом каталоге не обновляются. В результате индексатор не переиндексует эти большие двоичные объекты. Если вам нужно, чтобы большие двоичные объекты в каталоге были переиндексированы после переименования каталога, так как теперь у них есть новые URL-адреса, необходимо обновить LastModified метку времени для всех больших двоичных объектов в каталоге, чтобы индексатор знал повторно индексировать их во время будущего выполнения. Виртуальные каталоги в Хранилище BLOB-объектов Azure нельзя изменить, поэтому у них нет этой проблемы.

Обратимое удаление собственного BLOB-объекта

Для этого подхода к обнаружению удаления служба поиска ИИ Azure зависит от функции обратимого удаления большого двоичного объекта в Хранилище BLOB-объектов Azure, чтобы определить, перешли ли большие двоичные объекты в обратимое удаленное состояние. При обнаружении BLOB-объектов в этом состоянии индексатор поиска использует эту информацию для удаления соответствующего документа из индекса.

Требования к собственному обратимом удалению

  • Большие двоичные объекты должны находиться в контейнере хранилища BLOB-объектов Azure. Политика обратимого удаления больших двоичных объектов в службе "Поиск ИИ Azure" не поддерживается для больших двоичных объектов в ADLS 2-го поколения или Файлы Azure.

  • Включение обратимого удаления для BLOB-объектов.

  • Ключи документов для документов в индексе должны быть сопоставлены с свойством BLOB-объектов или метаданными большого двоичного объекта, например "metadata_storage_path".

  • Для настройки поддержки обратимого удаления необходимо использовать rest API предварительной версии, например 2024-05-01-previewконфигурацию источника данных индексатора в портал Azure.

  • Управление версиями BLOB-объектов не должно быть включено в учетной записи хранения. В противном случае машинное обратимое удаление не поддерживается проектом.

Настройка собственного обратимого удаления

В хранилище BLOB-объектов при включении обратимого удаления в соответствии с требованиями задайте политику хранения значением, превышающим расписание интервала индексатора. Если возникает проблема с индексатором или при наличии большого количества документов для индексирования, в конечном итоге требуется много времени, чтобы индексатор в конечном итоге обработал обратимые удаленные большие двоичные объекты. Индексаторы поиска ИИ Azure будут удалять только документ из индекса, если он обрабатывает большой двоичный объект во время обратимого удаления.

В службе "Поиск ИИ Azure" задайте собственную политику обнаружения обратимого удаления BLOB-объектов в источнике данных. Это можно сделать из портал Azure или с помощью API previewREST (2024-05-01-preview). В следующих инструкциях объясняется, как задать политику обнаружения удаления в портал Azure или с помощью REST API.

  1. Войдите на портал Azure.

  2. На странице обзора служба ИИ Azure перейдите в новый источник данных, визуальный редактор для указания определения источника данных.

    На следующем снимке экрана показано, где можно найти эту функцию на портале.

    Снимок экрана: конфигурация источника данных в мастере импорта данных.

  3. В новой форме источника данных введите необходимые поля, установите флажок "Отслеживать удаления" и выберите "Обратимое удаление собственного большого двоичного объекта". Затем нажмите кнопку "Сохранить ", чтобы включить функцию создания источника данных.

    Снимок экрана: обратимое удаление источника данных портала.

Переиндекс отменять отмену больших двоичных объектов с помощью собственных политик обратимого удаления

При восстановлении обратимого удаленного большого двоичного объекта в хранилище BLOB-объектов индексатор не всегда будет переиндексировать его. Это связано с тем, что индексатор использует метку LastModified времени BLOB-объекта, чтобы определить необходимость индексации. Если обратимый удаленный большой двоичный объект не будет удален, его LastModified метка времени не обновляется, поэтому, если индексатор уже обработал большие двоичные объекты с более последними LastModified метками времени, он не будет переиндексировать незавершенный большой двоичный объект.

Чтобы убедиться, что незавершенный большой двоичный объект переиндексирован, необходимо обновить метку времени большого LastModified двоичного объекта. Один из способов сделать это — повторное сохранение метаданных этого BLOB-объекта. Вам не нужно изменять метаданные, но при повторном сохранении метаданных будет обновлена метка времени LastModified BLOB-объекта, чтобы индексатор знал о том, что его следует выбрать.

Стратегия обратимого удаления с помощью пользовательских метаданных

Этот метод использует пользовательские метаданные, чтобы указать, следует ли удалить документ поиска из индекса. Для этого требуется два отдельных действия: удаление документа поиска из индекса, а затем удаление файла в служба хранилища Azure.

Эта функция общедоступна.

В служба хранилища Azure и поиске ИИ Azure необходимо выполнить действия, но нет других зависимостей функций.

  1. В служба хранилища Azure добавьте в файл пользовательскую пару "ключ-значение метаданных", чтобы указать, что файл помечен для удаления. Например, можно присвоить свойству IsDeleted значение false. Если вы хотите удалить файл, измените его на true.

  2. В поиске ИИ Azure измените определение источника данных, чтобы включить свойство dataDeletionDetectionPolicy. Например, следующая политика считает, что файл удаляется, если он имеет свойство IsDeleted метаданных со значением true:

    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"
        }
    }
    
  3. Запустите индексатор. После обработки файла и удаления документа из индекса поиска можно удалить физический файл в служба хранилища Azure.

Переиндексировать незавершенные большие двоичные объекты и файлы

Обратимое удаление можно отменить, если исходный исходный файл по-прежнему физически существует в служба хранилища Azure.

  1. Измените "softDeleteMarkerValue" : "false" большой двоичный объект или файл в служба хранилища Azure.

  2. Проверьте метку времени большого двоичного объекта или файла LastModified , чтобы сделать ее более новой, чем последний запуск индексатора. Вы можете принудительно обновить текущую дату и время, изменив существующие метаданные.

  3. Запустите индексатор.

Следующие шаги