Pesquisa e indexação de conteúdo

Alterações no AEM como Cloud Service

Com o AEM como Cloud Service, o Adobe está saindo de um modelo centrado em instâncias AEM para uma exibição baseada em serviços com n-x AEM Containers, conduzido por pipelines de CI/CD no Cloud Manager. Em vez de configurar e manter Índices em instâncias de AEM único, a configuração de Índice deve ser especificada antes de uma implantação. As mudanças de configuração na produção estão claramente quebrando as políticas de CI/CD. O mesmo vale para as alterações de índice, pois pode afetar a estabilidade e o desempenho do sistema se não especificado for testado e reindexado antes de trazê-los para produção.

Abaixo está uma lista das principais alterações em comparação ao AEM 6.5 e versões anteriores:

  1. Os usuários não terão acesso ao Gerenciador de índice de uma única Instância de AEM para depurar, configurar ou manter a indexação. Ele só é usado para desenvolvimento local e implantações no local.

  2. Os usuários não alterarão Índices em uma única Instância de AEM nem precisarão se preocupar mais com verificações de consistência ou reindexação.

  3. Em geral, as alterações de índice são iniciadas antes de entrar na produção para não contornar gateways de qualidade nos pipelines CI/CD do Cloud Manager e não afetar os KPIs de negócios na produção.

  4. Todas as métricas relacionadas, incluindo o desempenho da pesquisa na produção, estarão disponíveis para os clientes em tempo de execução para fornecer a visualização holística sobre os tópicos de Pesquisa e indexação.

  5. Os clientes poderão configurar alertas de acordo com suas necessidades.

  6. Os SREs estão monitorando a integridade do sistema 24 horas por dia, 7 dias por semana, e tomarão as medidas necessárias e o mais cedo possível.

  7. A configuração do índice é alterada por meio de implantações. As alterações na definição do índice são configuradas como outras alterações de conteúdo.

  8. Em um alto nível no AEM como um Cloud Service, com a introdução do Modelo de implantação Blue-Green, dois conjuntos de índices existirão: um conjunto para a versão antiga (azul) e um conjunto para a nova versão (verde).

  9. Os clientes podem ver se o trabalho de indexação está concluído na página de build do Cloud Manager e receberão uma notificação quando a nova versão estiver pronta para receber tráfego.

  10. Limitações:

  • Atualmente, o gerenciamento de índice no AEM como Cloud Service só é compatível com índices do tipo lucene.
  • Somente os analisadores padrão são suportados (ou seja, aqueles enviados com o produto). Não há suporte para analisadores personalizados.

Como usar

A definição de índices pode incluir esses três casos de uso:

  1. Adicionando uma nova definição de índice de cliente
  2. Atualização de uma definição de índice existente. Isso significa efetivamente adicionar uma nova versão de uma definição de índice existente
  3. Remoção de um índice existente redundante ou obsoleto.

Para ambos os pontos 1 e 2 acima, é necessário criar uma nova definição de índice como parte da base de código personalizada no agendamento de lançamento do Cloud Manager respectivo. Para obter mais informações, consulte a Implantação para AEM como uma documentação do Cloud Service.

Preparando a Nova Definição de Índice

OBSERVAÇÃO

Se estiver personalizando um índice pronto para uso, por exemplo damAssetLucene-6, copie a definição de índice pronta para uso mais recente de um ambiente Cloud Service e adicione suas personalizações no topo, isso garante que as configurações necessárias não sejam removidas inadvertidamente. Por exemplo, o nó tika em /oak:index/damAssetLucene-6/tika é um nó obrigatório e também deve fazer parte do índice personalizado, e não existe no SDK do Cloud.

Você precisa preparar um novo pacote de definição de índice que contenha a definição de índice real, seguindo esse padrão de nomenclatura:

<indexName>[-<productVersion>]-custom-<customVersion>

que precisa então ficar em ui.apps/src/main/content/jcr_root. As pastas de sub-raiz não são compatíveis a partir de agora.

O pacote da amostra acima é criado como com.adobe.granite:new-index-content:zip:1.0.0-SNAPSHOT.

OBSERVAÇÃO

Qualquer pacote de conteúdo que contenha definições de índice deve ter a seguinte propriedade definida no arquivo de propriedades do pacote de conteúdo, localizado em /META-INF/vault/properties.xml:

noIntermediateSaves=true

Implantação de definições de índice

OBSERVAÇÃO

Há um problema conhecido com o Jackrabbit Filevault Maven Package Plugin versão 1.1.0 que não permite adicionar oak:index a módulos de <packageType>application</packageType>. Para contornar isso, use a versão 1.0.4.

As definições de índice agora são marcadas como personalizadas e com versão:

  • A própria definição do índice (por exemplo /oak:index/ntBaseLucene-custom-1)

Portanto, para implantar um índice, a definição de índice (/oak:index/definitionname) precisa ser entregue via ui.apps via Git e o processo de implantação do Cloud Manager.

Depois que a nova definição de índice é adicionada, o novo aplicativo precisa ser implantado por meio do Cloud Manager. Após a implantação, dois trabalhos são iniciados, responsáveis por adicionar (e mesclar, se necessário) as definições de índice ao MongoDB e ao Azure Segment Store para autor e publicação, respectivamente. Os repositórios subjacentes estão sendo reindexados com as novas definições de índice, antes da mudança Blue-Green ocorrer.

DICA

Para obter mais detalhes sobre a estrutura do pacote necessária para AEM como Cloud Service, consulte o documento AEM Estrutura do Projeto.

Gerenciamento de índice usando implantações em verde-azul

O que é Gerenciamento de índice

O gerenciamento de índice trata da adição, remoção e alteração de índices. Alterar a definição de um índice é rápido, mas a aplicação da alteração (muitas vezes chamada de "criação de índice" ou, para índices existentes, "reindexação") requer tempo. Não é instantâneo: o repositório deve ser verificado para que os dados sejam indexados.

O que é implantação azul-verde

A implantação do Blue-Green pode reduzir o tempo de inatividade. Também permite atualizações de tempo de inatividade zero e reversões rápidas. A versão antiga do aplicativo (azul) é executada ao mesmo tempo que a nova versão do aplicativo (verde).

Áreas somente leitura e leitura-gravação

Determinadas áreas do repositório (partes somente leitura do repositório) podem ser diferentes na versão antiga (azul) e na nova (verde) do aplicativo. As áreas somente leitura do repositório normalmente são "/app" e "/libs". No exemplo a seguir, itálico é usado para marcar áreas somente leitura, enquanto negrito é usado para áreas de leitura e gravação.

  • /
  • /apps (somente leitura)
  • /content
  • /libs (somente leitura)
  • /oak:index
  • /oak:index/acme.
  • /jcr:system
  • /system
  • /var

As áreas de leitura e gravação do repositório são compartilhadas entre todas as versões do aplicativo, enquanto para cada versão do aplicativo, há um conjunto específico de /apps e /libs.

Gerenciamento de índice sem implantação em verde-azul

Durante o desenvolvimento ou ao usar instalações locais, os índices podem ser adicionados, removidos ou alterados no tempo de execução. Os índices são usados assim que estão disponíveis. Se um índice ainda não tiver que ser usado na versão antiga do aplicativo, ele normalmente será criado durante um tempo de inatividade programado. O mesmo ocorre ao remover um índice ou alterar um índice existente. Ao remover um índice, ele fica indisponível assim que é removido.

Gerenciamento de índice com implantação em verde-azul

Com implantações azul-esverdeadas, não há tempo de inatividade. No entanto, para o gerenciamento de índice, isso requer que os índices sejam usados apenas por determinadas versões do aplicativo. Por exemplo, ao adicionar um índice na versão 2 do aplicativo, você não gostaria que ele fosse usado pela versão 1 do aplicativo ainda. O inverso é o caso quando um índice é removido: um índice removido na versão 2 ainda é necessário na versão 1. Ao alterar uma definição de índice, queremos que a versão antiga do índice seja usada apenas para a versão 1 e que a nova versão do índice seja usada apenas para a versão 2.

A tabela a seguir mostra cinco definições de índice: o índice cqPageLucene é usado em ambas as versões, enquanto o índice damAssetLucene-custom-1 é usado somente na versão 2.

OBSERVAÇÃO

<indexName>-custom-<customerVersionNumber> é necessário para o AEM como um Cloud Service para marcar isso como uma substituição de um índice existente.

Índice Índice pronto para uso Uso na versão 1 Uso na versão 2
/oak:index/damAssetLucene Sim Sim Não
/oak:index/damAssetLucene-custom-1 Sim (personalizado) Não Sim
/oak:index/acme.product-custom-1 Não Sim Não
/oak:index/acme.product-custom-2 Não Não Sim
/oak:index/cqPageLucene Sim Sim Sim

O número da versão é incrementado sempre que o índice é alterado. Para evitar que os nomes de índice personalizados colidam com os nomes de índice do próprio produto, os índices personalizados, bem como as alterações nos índices prontos devem terminar com -custom-<number>.

Alterações nos índices prontos para uso

Quando o Adobe altera um índice pronto para uso como "damAssetLucene" ou "cqPageLucene", um novo índice chamado damAssetLucene-2 ou cqPageLucene-2 é criado ou, se o índice já foi personalizado, a definição de índice personalizada é mesclada com as alterações no índice pronto para uso, conforme mostrado abaixo. A mesclagem de alterações ocorre automaticamente. Isso significa que você não precisa fazer nada se um índice pronto para uso for alterado. No entanto, é possível personalizar o índice novamente mais tarde.

Índice Índice pronto para uso Uso na versão 2 Uso na versão 3
/oak:index/damAssetLucene-custom-1 Sim (personalizado) Sim Não
/oak:index/damAssetLucene-2-custom-1 Sim (mesclado automaticamente de damAssetLucene-custom-1 e damAssetLucene-2) Não Sim
/oak:index/cqPageLucene Sim Sim Não
/oak:index/cqPageLucene-2 Sim Não Sim

Limitações atuais

Atualmente, o gerenciamento de índice é compatível apenas com índices do tipo lucene.

Adicionar um índice

Para adicionar um índice chamado /oak:index/acme.product-custom-1 a ser usado em uma nova versão do aplicativo e posterior, o índice deve ser configurado da seguinte maneira:

acme.product-1-custom-1

Isso funciona ao anexar um identificador personalizado ao nome do índice, seguido por um ponto (.). O identificador deve ter entre 2 e 5 caracteres de comprimento.

Como acima, isso garante que o índice seja usado somente pela nova versão do aplicativo.

Alterar um índice

Quando um índice existente é alterado, um novo índice precisa ser adicionado com a definição de índice alterada. Por exemplo, considere que o índice existente /oak:index/acme.product-custom-1 é alterado. O índice antigo é armazenado em /oak:index/acme.product-custom-1 e o novo índice é armazenado em /oak:index/acme.product-custom-2.

A versão antiga do aplicativo usa a seguinte configuração:

/oak:index/acme.product-custom-1

A nova versão do aplicativo usa a seguinte configuração (alterada):

/oak:index/acme.product-custom-2

OBSERVAÇÃO

As definições de índice no AEM como Cloud Service podem não corresponder totalmente às definições de índice em uma instância de desenvolvimento local. A instância de desenvolvimento não tem uma configuração Tika, enquanto as instâncias AEM como Cloud Service têm uma. Se você personalizar um índice com uma configuração Tika, mantenha a configuração Tika.

Desfazer uma alteração

Às vezes, uma alteração em uma definição de índice precisa ser revertida. As razões podem ser que uma mudança foi feita por engano, ou uma mudança já não é necessária. Por exemplo, a definição de índice damAssetLucene-8-custom-3 foi criada por engano e já está implantada. Por causa disso, você pode querer reverter para a definição de índice anterior damAssetLucene-8-custom-2. Para fazer isso, você precisa adicionar um novo índice chamado damAssetLucene-8-custom-4 que contenha a definição do índice anterior, damAssetLucene-8-custom-2.

Remover um índice

O seguinte se aplica somente a índices personalizados. Os índices de produto não podem ser removidos, pois são usados pelo AEM.

Se um índice deve ser removido em uma versão posterior do aplicativo, você pode definir um índice vazio (um índice vazio que nunca é usado e não contém dados), com um novo nome. Para o propósito deste exemplo, você pode nomeá-lo /oak:index/acme.product-custom-3. Isso substitui o índice /oak:index/acme.product-custom-2. Depois que /oak:index/acme.product-custom-2 for removido pelo sistema, o índice vazio /oak:index/acme.product-custom-3 também poderá ser removido. Um exemplo desse índice vazio é:

<acme.product-custom-3
        jcr:primaryType="oak:QueryIndexDefinition"
        async="async"
        compatVersion="2"
        includedPaths="/dummy"
        queryPaths="/dummy"
        type="lucene">
        <indexRules jcr:primaryType="nt:unstructured">
            <rep:root jcr:primaryType="nt:unstructured">
                <properties jcr:primaryType="nt:unstructured">
                    <dummy
                        jcr:primaryType="nt:unstructured"
                        name="dummy"
                        propertyIndex="{Boolean}true"/>
                </properties>
            </rep:root>
        </indexRules>
    </acme.product-custom-3>

Se não for mais necessário ter uma personalização de um índice pronto para uso, você deverá copiar a definição de índice pronta para uso. Por exemplo, se você já implantou damAssetLucene-8-custom-3, mas não precisa mais das personalizações e deseja voltar ao índice damAssetLucene-8 padrão, é necessário adicionar um índice damAssetLucene-8-custom-4 que contenha a definição de índice damAssetLucene-8.

Otimizações de índice

O Apache Jackrabbit Oak permite configurações de índice flexíveis para lidar com consultas de pesquisa com eficiência. Os índices são especialmente importantes para repositórios maiores. Os índices não otimizados e os índices de fallback devem ser evitados o máximo possível. Certifique-se de que todas as consultas sejam apoiadas por um índice adequado. Consultas sem um índice adequado podem ler milhares de nós, que são registrados como um aviso. Essas consultas devem ser identificadas ao analisar os arquivos de log, para que as definições de índice possam ser otimizadas. Consulte esta página para obter mais informações.

Índice de texto completo do Lucene no AEM como Cloud Service

O índice de texto completo /oak:index/lucene-2 pode se tornar muito grande porque indexa todos os nós no repositório de AEM por padrão. O índice de texto completo do Lucene foi preterido internamente e não será mais implantado em AEM como Cloud Service a partir de setembro de 2021. Dessa forma, ele não é mais usado no lado do produto no AEM como um Cloud Service e não deve ser necessário executar o código do cliente. Para AEM como um ambiente de Cloud Service com índices comuns do Lucene, o Adobe está trabalhando com os clientes individualmente para obter uma abordagem coordenada para compensar esse índice e usar índices melhores e otimizados. Se esse índice for necessário para consultas personalizadas, como uma solução temporária, uma cópia desse índice deverá ser criada, usando um nome diferente, por exemplo, /oak:index/acme.lucene-1-custom-1, conforme descrito aqui.
Essa otimização não se aplica a outros ambientes AEM, que são hospedados no local ou gerenciados pelo Adobe Managed Services, a menos que o Adobe o aconselhasse de outra forma.

Nesta página