Desça e reconstrua um índice em Azure Cognitive Search

Este artigo explica como deixar cair e reconstruir um índice de Azure Cognitive Search, as circunstâncias em que são necessárias reconstruções, e recomendações para mitigar o impacto das reconstruções nos pedidos de consulta em curso. Se tiver frequentemente de reconstruir o seu índice de pesquisa, recomendamos a utilização de pseudónimos de índice para facilitar a troca do índice que a sua aplicação aponta.

Um índice de pesquisa é uma coleção de pastas físicas e índices invertidos baseados no campo do seu conteúdo, distribuídos em fragmentos através do número de divisórias atribuídas ao seu índice de pesquisa. Em Azure Cognitive Search, não se pode largar e recriar campos individuais. Se pretender reconstruir totalmente um campo, todo o armazenamento de campo deve ser eliminado, recriado com base num esquema de índice existente ou revisto, e depois repovoado com dados empurrados para o índice ou retirados de fontes externas.

É comum baixar e reconstruir índices durante o desenvolvimento quando se está a iterar sobre o design de índices. A maioria dos desenvolvedores trabalha com uma pequena amostra representativa dos seus dados para facilitar este processo.

Reconstruir condições

O quadro a seguir enumera as condições em que é necessária uma reconstrução.

Condição Description
Alterar uma definição de campo A revisão de um nome de campo, tipo de dados ou atributos de índice específicos (pescêjáveis, filtrais, ordenados, facetable) requer uma reconstrução completa.
Atribua um analisador a um campo Os analisadores são definidos num índice e depois atribuídos aos campos. Pode adicionar uma nova definição de analisador a um índice a qualquer momento, mas só pode atribuir um analisador quando o campo é criado. Isto é verdade tanto para as propriedades do analisador como do indexAnalyzer . A propriedade searchAnalyzer é uma exceção (você pode atribuir esta propriedade a um campo existente).
Atualizar ou eliminar uma definição de analisador num índice Não é possível eliminar ou alterar uma configuração de analisador existente (analisador, tokenizer, filtro de fichas ou filtro de carvão) no índice, a menos que reconstrua todo o índice.
Adicione um campo a um sugestivo Se um campo já existe e pretende adicioná-lo a uma construção de Suggesters , deve reconstruir o índice.
Excluir um campo Para remover fisicamente todos os vestígios de um campo, tem que reconstruir o índice. Quando uma reconstrução imediata não é prática, pode modificar o código de aplicação para desativar o acesso ao campo "eliminado" ou utilizar o parâmetro de consulta $select para escolher quais os campos representados no conjunto de resultados. Fisicamente, a definição de campo e o conteúdo permanecem no índice até à próxima reconstrução, quando se aplica um esquema que omite o campo em questão.
Níveis de comutação Se necessitar de mais capacidade, não há nenhuma atualização no local no portal do Azure. Deve ser criado um novo serviço e os índices devem ser construídos de raiz no novo serviço. Para ajudar a automatizar este processo, pode utilizar o código de amostra de backup de índices neste Azure Cognitive Search repo de amostras .NET. Esta aplicação irá fazer o back up do seu índice para uma série de ficheiros JSON e, em seguida, recriar o índice num serviço de pesquisa que especifica.

Condições de atualização

Muitas outras modificações podem ser feitas sem afetar as estruturas físicas existentes. Especificamente, as seguintes alterações não requerem uma reconstrução de índice. Para estas alterações, pode atualizar uma definição de índice com as suas alterações.

  • Adicione um novo campo
  • Desa estade o atributo recuperável num campo existente
  • Atualizar pesquisaAnlyzer em um campo com um índice existenteAnalyzer
  • Adicione uma nova definição de analisador num índice (que pode ser aplicado a novos campos)
  • Adicionar, atualizar ou eliminar perfis de pontuação
  • Adicionar, atualizar ou eliminar as definições de CORS
  • Adicionar, atualizar ou eliminar sinónimoMaps
  • Adicionar, atualizar ou eliminar configurações semânticas

Quando se adiciona um novo campo, os documentos indexados existentes recebem um valor nulo para o novo campo. Numa futura atualização de dados, os valores dos dados de origem externos substituem os nulos adicionados por Azure Cognitive Search. Para obter mais informações sobre a atualização do conteúdo do índice, consulte Adicionar, Atualizar ou Eliminar Documentos.

Como reconstruir um índice

Durante o desenvolvimento, o esquema de índice muda frequentemente. Pode planeá-lo criando índices que podem ser eliminados, recriados e recarregados rapidamente com um pequeno conjunto de dados representativos.

Para aplicações já em produção, recomendamos a criação de um novo índice que corre lado a lado um índice existente para evitar o tempo de inatividade da consulta. O seu código de aplicação fornece a reorientação para o novo índice.

  1. Determinar se é necessária uma reconstrução. Se estiver apenas a adicionar campos, ou a alterar alguma parte do índice que não está relacionado com os campos, poderá simplesmente atualizar a definição sem apagar, recriar e recarregar totalmente.

  2. Obtenha uma definição de índice no caso de precisar para referência futura.

  3. Largue o índice existente, assumindo que não está a executar índices novos e antigos lado a lado.

    Quaisquer consultas que visem esse índice são imediatamente retiradas. Lembre-se que a eliminação de um índice é irreversível, destruindo o armazenamento físico para a recolha de campos e outras construções. Faça uma pausa para pensar nas implicações antes de a largar.

  4. Crie um índice revisto, onde o corpo do pedido inclui definições de campo alteradas ou modificadas.

  5. Carregue o índice com documentos de uma fonte externa.

Quando se cria o índice, o armazenamento físico é atribuído para cada campo no esquema de índice, com um índice invertido criado para cada campo pesmável. Os campos que não são pesjáveis podem ser utilizados em filtros ou expressões, mas não têm índices invertidos e não são texto completo ou pescatórios felpudos. Numa reconstrução de índices, estes índices invertidos são eliminados e recriados com base no esquema de índice que fornece.

Quando carrega o índice, o índice invertido de cada campo é preenchido com todas as palavras únicas e tokenizadas de cada documento, com um mapa para os iDs de documento correspondentes. Por exemplo, ao indexar um conjunto de dados de hotéis, um índice invertido criado para um campo city pode conter termos para Seattle, Portland, e assim por diante. Documentos que incluam Seattle ou Portland no campo city teriam o seu documento de identificação listado ao lado do termo. Em qualquer operação de Adicionar, Atualizar ou Eliminar , os termos e a lista de ID do documento são atualizados em conformidade.

Equilibrar cargas de trabalho

A indexação não é executada em segundo plano, mas o serviço de pesquisa equilibrará quaisquer trabalhos de indexação contra consultas em curso. Durante a indexação, pode monitorizar os pedidos de consulta no portal para garantir que as consultas estão a ser concluídas em tempo útil.

Se a indexação das cargas de trabalho introduzir níveis inaceitáveis de latência de consulta, realizar análises de desempenho e rever estas dicas de desempenho para uma potencial mitigação.

Procurar atualizações

Pode começar a consultar um índice assim que o primeiro documento for carregado. Se souber o ID de um documento, a API do Documento de Procura rest devolve o documento específico. Para testes mais amplos, deve esperar até que o índice esteja totalmente carregado e, em seguida, usar consultas para verificar o contexto que espera ver.

Pode utilizar o Search Explorer ou uma ferramenta de teste web como o Postman ou o Código Visual Studio para verificar se há conteúdo atualizado.

Se adicionou ou renomeou um campo, utilize $select para devolver esse campo: search=*&$select=document-id,my-new-field,some-old-field&$count=true

Ver também