Ricerca e indicizzazione dei contenuti

Modifiche in AEM as a Cloud Service

Con AEM as a Cloud Service, l’Adobe si sta spostando da un modello AEM incentrato sull’istanza a una visualizzazione basata sui servizi con contenitori AEM n-x, guidato dalle pipeline CI/CD in Cloud Manager. Invece di configurare e mantenere gli indici su singole istanze di AEM, è necessario specificare la configurazione dell'indice prima di una distribuzione. I cambiamenti di configurazione nella produzione stanno chiaramente interrompendo i criteri CI/CD. Lo stesso vale per le modifiche dell'indice in quanto può influire sulla stabilità e sulle prestazioni del sistema se non specificato testato e reindicizzato prima di introdurli nella produzione.

Di seguito è riportato un elenco delle modifiche principali rispetto a AEM 6.5 e versioni precedenti:

  1. Gli utenti non avranno più accesso a Index Manager di una singola istanza AEM per eseguire il debug, configurare o mantenere l'indicizzazione. Viene utilizzato solo per lo sviluppo locale e le distribuzioni on-premise.

  2. Gli utenti non cambieranno gli indici su una singola istanza AEM né dovranno più preoccuparsi dei controlli di coerenza o della reindicizzazione.

  3. In generale, le modifiche dell’indice vengono avviate prima di passare alla produzione per non aggirare i gateway di qualità nelle pipeline CI/CD di Cloud Manager e non influire sui KPI aziendali in produzione.

  4. Tutte le metriche correlate, comprese le prestazioni di ricerca in produzione, saranno disponibili per i clienti in fase di runtime al fine di fornire una visione olistica sugli argomenti di ricerca e indicizzazione.

  5. I clienti potranno impostare gli avvisi in base alle proprie esigenze.

  6. Gli SRE monitorano lo stato di salute del sistema 24/7 e intraprenderanno le azioni necessarie e il più presto possibile.

  7. La configurazione dell’indice viene modificata tramite le distribuzioni. Le modifiche alla definizione dell’indice sono configurate come altre modifiche al contenuto.

  8. Ad un livello elevato su AEM as a Cloud Service, con l'introduzione Modello di distribuzione Blue-Green esistono due serie di indici: un set per la versione precedente (blu) e uno per la nuova versione (verde).

  9. I clienti possono vedere se il processo di indicizzazione è completo nella pagina di compilazione di Cloud Manager e riceveranno una notifica quando la nuova versione è pronta per il traffico.

  10. Limiti:

  • Attualmente, la gestione degli indici su AEM as a Cloud Service è supportata solo per gli indici di tipo lucene.
  • Sono supportati solo gli analizzatori standard (ovvero quelli forniti con il prodotto). Gli analizzatori personalizzati non sono supportati.

Guida all’uso

La definizione degli indici può comprendere i tre casi d’uso seguenti:

  1. Aggiunta di una nuova definizione dell'indice del cliente
  2. Aggiornamento di una definizione di indice esistente. Ciò significa effettivamente aggiungere una nuova versione di una definizione di indice esistente
  3. Rimozione di un indice esistente ridondante o obsoleto.

Per entrambi i punti 1 e 2 di cui sopra, devi creare una nuova definizione dell’indice come parte della base di codice personalizzata nella rispettiva pianificazione della versione di Cloud Manager. Per ulteriori informazioni, consulta la sezione Distribuzione AEM documentazione as a Cloud Service.

Preparazione della nuova definizione dell'indice

NOTA

Se si personalizza un indice preconfigurato, ad esempio damAssetLucene-6, copia l'ultima definizione dell'indice predefinita da un ambiente Cloud Service e aggiungi le tue personalizzazioni in alto, questo assicura che le configurazioni richieste non vengano rimosse inavvertitamente. Ad esempio, il tika nodo sotto /oak:index/damAssetLucene-6/tika è un nodo obbligatorio che deve far parte anche dell'indice personalizzato e non esiste nell'SDK di Cloud.

È necessario preparare un nuovo pacchetto di definizione dell'indice che contiene la definizione effettiva dell'indice, seguendo questo pattern di denominazione:

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

che poi deve scendere ui.apps/src/main/content/jcr_root. Le cartelle secondarie non sono supportate al momento.

Il pacchetto del campione di cui sopra è costruito come com.adobe.granite:new-index-content:zip:1.0.0-SNAPSHOT.

NOTA

Qualsiasi pacchetto di contenuto contenente le definizioni degli indici deve avere la seguente proprietà impostata nel file delle proprietà del pacchetto di contenuto, situato in /META-INF/vault/properties.xml:

noIntermediateSaves=true

Distribuzione delle definizioni degli indici

NOTA

C'è un problema noto con la versione del plug-in pacchetto Maven Jackrabbit Filevault 1.1.0 che non consente di aggiungere oak:index a moduli di <packageType>application</packageType>. È necessario eseguire l’aggiornamento a una versione più recente del plug-in.

Le definizioni degli indici sono ora contrassegnate come personalizzate e con versione:

  • La definizione stessa dell'indice (ad esempio /oak:index/ntBaseLucene-custom-1)

Pertanto, per distribuire un indice, la definizione dell'indice (/oak:index/definitionname) deve essere fornita tramite ui.apps tramite Git e il processo di implementazione di Cloud Manager.

Una volta aggiunta la nuova definizione dell’indice, la nuova applicazione deve essere distribuita tramite Cloud Manager. All’avvio della distribuzione vengono avviati due processi, responsabili dell’aggiunta (e dell’unione, se necessario) delle definizioni dell’indice a MongoDB e Azure Segment Store rispettivamente per l’authoring e la pubblicazione. Gli archivi sottostanti vengono reindicizzati con le nuove definizioni dell'indice, prima che si verifichi lo switch Blue-Green.

SUGGERIMENTO

Per ulteriori dettagli sulla struttura del pacchetto richiesta per AEM as a Cloud Service, vedere il documento AEM struttura del progetto.

Gestione dell'indice utilizzando le implementazioni Blue-Green

Gestione dell'indice

La gestione degli indici riguarda l’aggiunta, la rimozione e la modifica degli indici. Modifica della definizione di un indice è veloce, ma l'applicazione della modifica (spesso chiamata "creazione di un indice", o, per gli indici esistenti, "reindicizzazione") richiede tempo. Non è istantaneo: l’archivio deve essere analizzato per individuare i dati da indicizzare.

Installazione Blue-Green

L'implementazione Blue-Green può ridurre i tempi di inattività. Consente inoltre di eseguire senza tempi di inattività gli aggiornamenti e offre rapidi rollback. La vecchia versione dell'applicazione (blu) viene eseguita contemporaneamente alla nuova versione dell'applicazione (verde).

Aree di sola lettura e di lettura/scrittura

Alcune aree dell’archivio (parti di sola lettura dell’archivio) possono essere diverse nella vecchia versione (blu) e nella nuova versione (verde) dell’applicazione. Le aree di sola lettura dell'archivio sono tipicamente "/app" e "/libs". Nell’esempio seguente, il corsivo viene utilizzato per contrassegnare le aree di sola lettura, mentre il grassetto viene utilizzato per le aree di lettura/scrittura.

  • /
  • /apps (sola lettura)
  • /content
  • /libs (sola lettura)
  • /oak:index
  • /oak:index/acme.
  • /jcr:system
  • /system
  • /var

Le aree di lettura-scrittura dell'archivio sono condivise tra tutte le versioni dell'applicazione, mentre per ogni versione dell'applicazione, esiste un set specifico di /apps e /libs.

Gestione degli indici senza implementazione Blue-Green

Durante lo sviluppo o quando si utilizzano installazioni locali, gli indici possono essere aggiunti, rimossi o modificati in fase di runtime. Gli indici vengono utilizzati non appena sono disponibili. Se un indice non deve ancora essere utilizzato nella vecchia versione dell'applicazione, l'indice viene generalmente generato durante un downtime pianificato. Lo stesso si verifica quando si rimuove un indice o si modifica un indice esistente. Quando si rimuove un indice, questo diventa non disponibile non appena viene rimosso.

Gestione dell'indice con implementazione Blue-Green

Con le implementazioni blu-verde, non si verificano tempi di inattività. Tuttavia, per la gestione degli indici, ciò richiede che gli indici siano utilizzati solo da alcune versioni dell'applicazione. Ad esempio, quando si aggiunge un indice nella versione 2 dell'applicazione, non è ancora necessario utilizzarlo nella versione 1 dell'applicazione. Il contrario si verifica quando un indice viene rimosso: un indice rimosso nella versione 2 è ancora necessario nella versione 1. Quando si modifica una definizione di indice, si desidera che la vecchia versione dell'indice venga utilizzata solo per la versione 1 e che la nuova versione dell'indice venga utilizzata solo per la versione 2.

La tabella seguente mostra cinque definizioni di indice: index cqPageLucene viene utilizzato in entrambe le versioni mentre index damAssetLucene-custom-1 viene utilizzato solo nella versione 2.

NOTA

<indexName>-custom-<customerVersionNumber> è necessario per AEM as a Cloud Service per contrassegnare questo come sostitutivo di un indice esistente.

Indice Indice predefinito Usa nella versione 1 Usa nella versione 2
/oak:index/damAssetLucene No
/oak:index/damAssetLucene-custom-1 Sì (personalizzato) No
/oak:index/acme.product-custom-1 No No
/oak:index/acme.product-custom-2 No No
/oak:index/cqPageLucene

Il numero di versione viene incrementato ogni volta che l’indice viene modificato. Per evitare che i nomi di indice personalizzati si scontrino con i nomi di indice del prodotto stesso, gli indici personalizzati e le modifiche agli indici predefiniti devono terminare con -custom-<number>.

Modifiche agli indici predefiniti

Una volta che Adobe cambia un indice predefinito come "damAssetLucene" o "cqPageLucene", un nuovo indice denominato damAssetLucene-2 o cqPageLucene-2 viene creato oppure, se l'indice è già stato personalizzato, la definizione di indice personalizzato viene unita alle modifiche nell'indice predefinito, come mostrato di seguito. L'unione delle modifiche avviene automaticamente. Ciò significa che non è necessario eseguire alcuna operazione se un indice predefinito cambia. Tuttavia, è possibile personalizzare di nuovo l'indice in un secondo momento.

Indice Indice predefinito Usa nella versione 2 Usa nella versione 3
/oak:index/damAssetLucene-custom-1 Sì (personalizzato) No
/oak:index/damAssetLucene-2-custom-1 Sì (unito automaticamente da damAssetLucene-custom-1 e damAssetLucene-2) No
/oak:index/cqPageLucene No
/oak:index/cqPageLucene-2 No

Limitazioni attuali

La gestione degli indici è attualmente supportata solo per gli indici di tipo lucene.

Aggiunta di un indice

Per aggiungere un indice denominato /oak:index/acme.product-custom-1 per essere utilizzato in una nuova versione dell'applicazione e successivamente, l'indice deve essere configurato come segue:

acme.product-1-custom-1

Questo funziona precedendo un identificatore personalizzato al nome dell'indice, seguito da un punto (.). La lunghezza dell'identificatore deve essere compresa tra 2 e 5 caratteri.

Come sopra, questo assicura che l'indice sia utilizzato solo dalla nuova versione dell'applicazione.

Modifica di un indice

Quando viene modificato un indice esistente, è necessario aggiungere un nuovo indice con la modifica della definizione dell'indice. Ad esempio, considera l'indice esistente /oak:index/acme.product-custom-1 viene modificato. Il vecchio indice è memorizzato in /oak:index/acme.product-custom-1e il nuovo indice è memorizzato in /oak:index/acme.product-custom-2.

La vecchia versione dell'applicazione utilizza la seguente configurazione:

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

La nuova versione dell’applicazione utilizza la seguente configurazione (modificata):

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

NOTA

Le definizioni degli indici su AEM as a Cloud Service potrebbero non corrispondere completamente alle definizioni degli indici su un'istanza di sviluppo locale. L'istanza di sviluppo non dispone di una configurazione Tika, mentre AEM istanze as a Cloud Service ne hanno una. Se si personalizza un indice con una configurazione Tika, si prega di mantenere la configurazione Tika.

Annullamento di una modifica

A volte, è necessario ripristinare una modifica nella definizione di un indice. Le ragioni potrebbero essere che un cambiamento è stato fatto per errore, o che non è più necessario un cambiamento. Ad esempio, la definizione dell'indice damAssetLucene-8-custom-3 è stato creato per errore ed è già distribuito. Per questo motivo, potrebbe essere utile ripristinare la precedente definizione dell'indice damAssetLucene-8-custom-2. A questo scopo, devi aggiungere un nuovo indice denominato damAssetLucene-8-custom-4 che contiene la definizione dell'indice precedente, damAssetLucene-8-custom-2.

Rimozione di un indice

Il seguente si applica solo agli indici personalizzati. Gli indici di prodotto non possono essere rimossi in quanto sono utilizzati da AEM.

Se un indice deve essere rimosso in una versione successiva dell'applicazione, è possibile definire un indice vuoto (un indice vuoto che non viene mai utilizzato e non contiene dati) con un nuovo nome. Ai fini di questo esempio, è possibile denominarlo /oak:index/acme.product-custom-3. Questo sostituisce l'indice /oak:index/acme.product-custom-2. Una volta /oak:index/acme.product-custom-2 viene rimosso dal sistema, l'indice vuoto /oak:index/acme.product-custom-3 possono quindi essere rimossi. Un esempio di tale indice vuoto è:

<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 non è più necessario avere una personalizzazione di un indice predefinito, è necessario copiare la definizione di indice preconfigurata. Ad esempio, se hai già distribuito damAssetLucene-8-custom-3, ma non sono più necessarie le personalizzazioni e desiderano tornare al valore predefinito damAssetLucene-8 indice, quindi devi aggiungere un indice damAssetLucene-8-custom-4 che contiene la definizione dell'indice di damAssetLucene-8.

Ottimizzazioni degli indici

Apache Jackrabbit Oak consente configurazioni di indice flessibili per gestire in modo efficiente le query di ricerca. Gli indici sono particolarmente importanti per gli archivi più grandi. Assicurati che tutte le query siano supportate da un indice appropriato. Le query senza un indice appropriato possono leggere migliaia di nodi, che vengono quindi registrate come avviso. Tali query devono essere identificate analizzando i file di registro, in modo da ottimizzare le definizioni degli indici. Vedi questa pagina per ulteriori informazioni.

Indice full text Lucene su AEM as a Cloud Service

Indice fulltext /oak:index/lucene-2 può diventare molto grande perché indicizza tutti i nodi nell’archivio AEM per impostazione predefinita. In seguito ai piani dell’Adobe di ritirarlo, questo indice non verrà più utilizzato sul lato prodotto in AEM as a Cloud Service e non dovrebbe essere richiesto di eseguire il codice cliente. Per AEM ambienti as a Cloud Service con indici Lucene comuni, Adobe sta lavorando con i clienti singolarmente per un approccio coordinato per compensare questo indice e per utilizzare indici migliori e ottimizzati. I clienti non devono effettuare alcuna azione senza ulteriore preavviso da parte dell’Adobe. AEM clienti as a Cloud Service saranno informati per Adobe quando è necessario intervenire in merito a questa ottimizzazione. Se questo indice è necessario per le query personalizzate, come soluzione temporanea, una copia di questo indice deve essere creata utilizzando un nome diverso, ad esempio /oak:index/acme.lucene-1-custom-1, come descritto qui.
Questa ottimizzazione non si applica per impostazione predefinita ad altri ambienti AEM ospitati on-premise o gestiti da Adobe Managed Services.

Ottimizzazioni delle query

La Prestazioni query lo strumento ti consente di osservare query JCR sia popolari che lente. Inoltre, è in grado di analizzare le query e visualizzare varie informazioni su, soprattutto se viene utilizzato un indice per questa query o meno.

A differenza di AEM on-premise, AEM as a Cloud Service non visualizza il Prestazioni query nell'interfaccia utente. È ora disponibile tramite la Console per sviluppatori (in Cloud Manager) nella sezione Query scheda .

In questa pagina