Alterar e excluir a detecção usando indexadores para o Armazenamento do Azure na Pesquisa de IA do Azure
Depois que um índice de pesquisa inicial for criado, talvez você queira que os trabalhos de indexador subsequentes apenas escolham documentos novos e alterados. Para conteúdo indexado originado do Armazenamento do Azure, a detecção de alterações ocorre automaticamente porque os indexadores acompanham a última atualização usando os carimbos de data/hora internos em objetos e arquivos no Armazenamento do Microsoft Azure.
Embora a detecção de alterações seja determinada, a detecção de exclusões não é. Um indexador não acompanha a exclusão de objeto em fontes de dados. Para evitar ter documentos de pesquisa órfãos, você pode implementar uma estratégia de "exclusão temporária" que resulta na exclusão de documentos de pesquisa primeiro, com exclusão física no Armazenamento do Microsoft Azure como uma segunda etapa.
Há duas maneiras de implementar a estratégia de exclusão temporária:
- Exclusão suave de blob nativo (versão prévia), aplica-se somente ao Armazenamento de Blobs
- Exclusão temporária usando metadados personalizados
A estratégia de detecção de exclusão deve ser aplicada a partir da primeira execução do indexador. Se você não estabeleceu a política de exclusão antes da execução inicial, todos os documentos que foram excluídos antes da política ser implementada permanecerão no índice, mesmo se você adicionar a política ao indexador posteriormente e redefini-lo. Se isso ocorreu, é sugerido que você crie um novo índice usando um novo indexador, garantindo que a política de exclusão esteja em vigor desde o início.
Pré-requisitos
Usar um indexador Armazenamento do Microsoft Azure para Armazenamento de Blobs, Armazenamento de Tabelas, Armazenamento de Arquivos ou Data Lake Storage Gen2
Usar chaves de documento e estrutura de arquivos consistentes. A alteração de chaves de documento ou nomes de diretório e caminhos (aplica-se ao ADLS Gen2) interpreta as informações de acompanhamento internas usadas pelos indexadores para saber qual conteúdo foi indexado e quando ele foi indexado pela última vez.
Observação
O ADLS Gen2 permite que os diretórios sejam renomeados. Quando um diretório é renomeado, os carimbos de data/hora dos blobs nesse diretório não são atualizados. Como resultado, o indexador não reindexará esses blobs. Se você precisar que os blobs em um diretório sejam reindexados após uma renomeação de diretório porque eles terão então novas URLs, será necessário atualizar o carimbo de data/hora LastModified
para todos os blobs no diretório para que o indexador saiba reindexá-los durante uma execução futura. Os diretórios virtuais no Armazenamento de Blobs do Azure não podem ser alterados, então eles não apresentam esse problema.
Exclusão temporária de blob nativo
Para essa abordagem de detecção de exclusão, a Pesquisa de IA do Azure depende do recurso de exclusão reversível de blob nativo no Armazenamento de Blobs do Azure para determinar se os blobs fizeram a transição para um estado de exclusão reversível. Quando os blobs são detectados nesse estado, um indexador de pesquisa usa essas informações para remover o documento correspondente do índice.
Requisitos para exclusão temporária nativa
Os blobs devem estar em um contêiner de Armazenamento de Blobs do Azure. Não há suporte para a política de exclusão reversível do blob nativo da Pesquisa de IA do Azure para blobs no ADLS Gen2 ou nos Arquivos do Azure.
As chaves dos documentos em seu índice devem ser mapeadas para serem uma propriedade de blob ou metadados de blob, tal como "metadata_storage_path".
Você deve usar uma API REST de versão prévia, como
2024-05-01-preview
, ou a configuração da fonte de dados do indexador no portal do Azure, para configurar o suporte para exclusão reversível.O controle de versão do blob não deve ser habilitado na conta de armazenamento. Caso contrário, a exclusão temporária nativa não será compatível com o design.
Configurar exclusão temporária nativa
No Armazenamento de blobs, ao habilitar a exclusão temporária conforme os requisitos, defina a política de retenção como um valor muito maior do que o agendamento de intervalo do indexador. Se houver um problema ao executar o indexador ou se você tiver um grande número de documentos para indexar, haverá muito tempo para que o indexador processe os blobs com exclusão temporária. Os indexadores da Pesquisa de IA do Azure só excluirão um documento do índice se ele processar o blob enquanto ele estiver em um estado de exclusão temporária.
Na Pesquisa de IA do Azure, defina uma política de detecção de exclusão temporária de blobs nativos na fonte de dados. Você pode fazer isso no portal do Azure ou usando uma API previewREST (2024-05-01-preview
). As instruções a seguir explicam como definir a política de detecção de exclusão no portal do Azure ou por meio de APIs REST.
Entre no portal do Azure.
Na página de visão geral do serviço da Pesquisa de IA do Azure, acesse Nova Fonte de Dados, um editor visual para especificar uma definição de fonte de dados.
A captura de tela a seguir mostra onde você pode encontrar esse recurso no portal.
No formulário Nova Fonte de Dados, preencha os campos obrigatórios, marque a caixa de seleção Acompanhar exclusões e escolha Exclusão temporária de blob nativo. Em seguida, clique em Salvar para habilitar o recurso na criação da Fonte de Dados.
Reindexar blobs não excluídos usando políticas nativas de exclusão temporária
Se você restaurar um blob com exclusão temporária no armazenamento de blobs, o indexador nem sempre o reindexará. Isso ocorre porque o indexador usa o carimbo de data/hora LastModified
do blob para determinar se a indexação é necessária. Quando um blob com exclusão temporária não é excluído, o carimbo de data/hora LastModified
dele não é atualizado. Portanto, se o indexador já tiver processado blobs com carimbos de data/hora LastModified
mais recentes, ele não reindexará o blob cuja exclusão foi desfeita.
Para garantir que um blob não excluído seja reindexado, será necessário atualizar o carimbo de data/hora LastModified
do blob. Uma maneira de fazer isso é salvando novamente os metadados desse blob. Você não precisa alterar os metadados, mas resalvá-los atualizará o carimbo de data/hora LastModified
do blob para que o indexador saiba que ele deve ser escolhido.
Estratégia de exclusão temporária usando metadados personalizados
Esse método usa metadados personalizados para indicar se um documento de pesquisa deve ser removido do índice. Esse método requer duas ações separadas: exclusão do documento de pesquisa do índice e exclusão do arquivo no Armazenamento do Microsoft Azure.
Esse recurso está em disponibilidade geral.
Há etapas a serem seguidas no Armazenamento do Microsoft Azure e na Pesquisa de IA do Azure, mas não há outras dependências de recurso.
No Armazenamento do Microsoft Azure, adicione um par chave-valor de metadados personalizado ao arquivo para indicar que o arquivo está sinalizado para exclusão. Por exemplo, você pode nomear a propriedade "IsDeleted", definida como false. Quando você quiser excluir o arquivo, altere-o para true.
Na Pesquisa de IA do Azure, edite a definição da fonte de dados para incluir uma propriedade "dataDeletionDetectionPolicy". Por exemplo, a política a seguir considerará que um arquivo foi excluído se tiver uma propriedade de metadados
IsDeleted
com o valortrue
: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" } }
Execute o indexador. Depois que o indexador tiver processado o arquivo e excluído o documento do índice de pesquisa, você poderá excluir o arquivo físico no Armazenamento do Microsoft Azure.
Reindexar blobs e arquivos restaurados
Você poderá reverter uma exclusão temporária se o arquivo original ainda existir fisicamente no Armazenamento do Microsoft Azure.
Altere o
"softDeleteMarkerValue" : "false"
no blob ou arquivo no Armazenamento do Microsoft Azure.Verifique o carimbo de data/hora
LastModified
do blob ou do arquivo para torná-lo mais novo do que a última execução do indexador. Você pode forçar uma atualização para a data e hora atuais salvando novamente os metadados existentes.Execute o indexador.