Inhoud zoeken en indexeren indexing
Wijzigingen in AEM as a Cloud Service changes-in-aem-as-a-cloud-service
Met AEM as a Cloud Service beweegt de Adobe zich van een AEM instantie-centric model naar een op dienst-gebaseerde mening met n-x AEM Containers, die door CI/CD pijpleidingen in Cloud Manager wordt aangedreven. In plaats van het vormen van en het handhaven van Indexen op enige AEM instanties, moet de configuratie van de Index vóór een plaatsing worden gespecificeerd. De veranderingen van de configuratie in productie zijn duidelijk het beleid van CI/CD breken. Hetzelfde geldt voor indexwijzigingen, aangezien dit van invloed kan zijn op de stabiliteit en de prestaties van het systeem als deze niet worden gespecificeerd, getest en opnieuw worden gedestilleerd voordat ze in productie worden genomen.
Hieronder volgt een lijst met de belangrijkste wijzigingen ten opzichte van AEM 6.5 en eerdere versies:
- De gebruikers hebben geen toegang tot de Manager van de Index van één enkele AEMInstantie om, indexeren te zuiveren te vormen of te handhaven. Het wordt alleen gebruikt voor lokale ontwikkeling en on-prem-implementaties.
- De gebruikers veranderen geen Indexen op één enkel AEMInstantie noch moeten zij zich over consistentiecontroles of het opnieuw indexeren meer ongerust maken.
- Over het algemeen worden indexwijzigingen aangevangen voordat naar de productie wordt gegaan om de kwaliteitsgateways in de Cloud Manager-CBI/Cd-pijpleidingen niet te omzeilen en geen invloed te hebben op de KPI's van de bedrijfsvoering in de productie.
- Alle verwante metriek, met inbegrip van onderzoeksprestaties in productie, zijn beschikbaar voor klanten bij runtime om de holistische mening over de onderwerpen van Onderzoek en het Indexeren te verstrekken.
- Klanten kunnen waarschuwingen instellen op basis van hun behoeften.
- SRE's controleren de systeemgezondheid 24/7 en er wordt zo snel mogelijk actie ondernomen.
- Indexconfiguratie wordt gewijzigd via implementaties. Wijzigingen in indexdefinities worden net als andere wijzigingen in de inhoud geconfigureerd.
- Op een hoog niveau op AEM as a Cloud Service, met de introductie van het het rollen plaatsingsmodel, bestaan twee reeksen indexen: voor de oude versie, en voor de nieuwe versie.
- Klanten kunnen zien of de indexerende baan op Cloud Manager volledig is bouwt pagina en ontvangt een bericht wanneer de nieuwe versie klaar is om verkeer te nemen.
Beperkingen:
- Indexbeheer op AEM as a Cloud Service wordt momenteel alleen ondersteund voor indexen van het type
lucene
. - Alleen standaardanalysatoren worden ondersteund (dat wil zeggen de analysatoren die bij het product worden geleverd). Aangepaste analysatoren worden niet ondersteund.
- Intern, zouden andere indexen voor vragen kunnen worden gevormd en worden gebruikt. Bijvoorbeeld, zouden de vragen die tegen de
damAssetLucene
index worden geschreven, op Skyline, in feite tegen een versie van de Elasticsearch van deze index kunnen worden uitgevoerd. Dit verschil is doorgaans niet zichtbaar voor de toepassing en de gebruiker, maar bepaalde gereedschappen, zoals de functieexplain
, rapporteren een andere index. Voor verschillen tussen de indexen van Lucene en Elastische indexen, zie de Elastische documentatie in Apache Jackrabbit Oak. Klanten hoeven en kunnen Elasticsearch-indexen niet rechtstreeks configureren. - Zoeken op vergelijkbare eigenschapvectoren (
useInSimilarity = true
) wordt niet ondersteund.
Hoe wordt het gebruikt how-to-use
Indexdefinities kunnen als volgt in drie gevallen van primair gebruik worden ingedeeld:
- voeg een nieuwe definitie van de douaneindex toe.
- werk een bestaande indexdefinitie bij door een nieuwe versie toe te voegen.
- verwijder een indexdefinitie die niet meer noodzakelijk is.
Voor zowel de punten 1 als 2 hierboven, moet u een indexdefinitie als deel van uw basis van douanecode in het respectieve de versieschema van Cloud Manager tot stand brengen. Voor meer informatie, zie het Opstellen aan AEM as a Cloud Servicedocumentatie.
Indexnamen index-names
Een indexdefinitie kan in één van de volgende categorieën vallen:
-
De OOTB-index (Out-of-the-box). Bijvoorbeeld:
/oak:index/cqPageLucene-2
of/oak:index/damAssetLucene-8
. -
Aanpassing van een OOTB-index. Deze worden aangegeven door
-custom-
toe te voegen, gevolgd door een numerieke id aan de oorspronkelijke indexnaam. Bijvoorbeeld:/oak:index/damAssetLucene-8-custom-1
. -
Volledig aangepaste index: het is mogelijk een geheel nieuwe geheel nieuwe index te maken. Hun naam moet een voorvoegsel hebben om naamconflicten te voorkomen. Bijvoorbeeld:
/oak:index/acme.product-1-custom-2
, waarbij het voorvoegselacme.
is
dam:Asset
nodetype (in het bijzonder fulltext indexen) wordt sterk afgeraden, omdat deze een conflict kunnen veroorzaken met OOTB-productfuncties, wat tot functionele en prestatieproblemen kan leiden. Over het algemeen is het toevoegen van extra eigenschappen aan de huidige damAssetLucene-*
indexversie de meest aangewezen manier om vragen op dam:Asset
nodetype te indexeren (deze veranderingen zullen automatisch in een nieuwe productversie van de index worden samengevoegd als het daarna wordt vrijgegeven). In geval van twijfel kunt u contact opnemen met de Adobe Support voor advies.De nieuwe indexdefinitie voorbereiden preparing-the-new-index-definition
damAssetLucene-8
, kopieer de recentste uit-van-de-doos indexdefinitie van het milieu van de a Cloud Service gebruikend de Manager van het Pakket CRX DE (/crx/packmgr/
). Wijzig de naam in damAssetLucene-8-custom-1
(of hoger) en voeg uw aanpassingen toe in het XML-bestand. Dit zorgt ervoor dat de vereiste configuraties niet per ongeluk worden verwijderd. Het knooppunt tika
onder /oak:index/damAssetLucene-8/tika
is bijvoorbeeld vereist in de aangepaste index die wordt geïmplementeerd in een AEM Cloud Service-omgeving, maar bestaat niet in de lokale AEM SDK.Voor aanpassingen van een OOTB-index bereidt u een nieuw pakket voor dat de feitelijke indexdefinitie bevat die volgt op dit naamgevingspatroon:
<indexName>-<productVersion>-custom-<customVersion>
Voor een volledig aangepaste index maakt u een nieuw indexdefinitiepakket dat de indexdefinitie bevat die volgt op dit naamgevingspatroon:
<prefix>.<indexName>-<productVersion>-custom-<customVersion>
properties.xml
-bestand van het inhoudspakket. properties.xml
wordt standaard gemaakt in een nieuw pakket en bevindt zich op <package_name>/META-INF/vault/properties.xml
:-
noIntermediateSaves=true
-
allowIndexDefinitions=true
Aangepaste indexdefinities gebruiken deploying-custom-index-definitions
Om de plaatsing van een aangepaste versie van de uit-van-de-doos index damAssetLucene-8
te illustreren, zullen wij een geleidelijke gids verstrekken. In dit voorbeeld wordt de naam gewijzigd in damAssetLucene-8-custom-1
. Dan is het proces als volgt:
-
Maak een nieuwe map met de bijgewerkte indexnaam in de map
ui.apps
:- Voorbeeld:
ui.apps/src/main/content/jcr_root/_oak_index/damAssetLucene-8-custom-1/
- Voorbeeld:
-
Voeg een configuratiebestand
.content.xml
toe met de aangepaste configuraties in de gemaakte map. Hieronder ziet u een voorbeeld van een aanpassing:
Bestandsnaam:ui.apps/src/main/content/jcr_root/_oak_index/damAssetLucene-8-custom-1/.content.xml
code language-xml <?xml version="1.0" encoding="UTF-8"?> <jcr:root xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:dam="http://www.day.com/dam/1.0" xmlns:nt="http://www.jcp.org/jcr/nt/1.0" xmlns:oak="http://jackrabbit.apache.org/oak/ns/1.0" xmlns:rep="internal" jcr:mixinTypes="[rep:AccessControllable]" jcr:primaryType="oak:QueryIndexDefinition" async="[async,nrt]" compatVersion="{Long}2" evaluatePathRestrictions="{Boolean}true" includedPaths="[/content/dam]" maxFieldLength="{Long}100000" type="lucene"> <facets jcr:primaryType="nt:unstructured" secure="statistical" topChildren="100"/> <indexRules jcr:primaryType="nt:unstructured"> <dam:Asset jcr:primaryType="nt:unstructured"> <properties jcr:primaryType="nt:unstructured"> <cqTags jcr:primaryType="nt:unstructured" name="jcr:content/metadata/cq:tags" nodeScopeIndex="{Boolean}true" propertyIndex="{Boolean}true" useInSpellcheck="{Boolean}true" useInSuggest="{Boolean}true"/> </properties> </dam:Asset> </indexRules> <tika jcr:primaryType="nt:folder"> <config.xml jcr:primaryType="nt:file"/> </tika> </jcr:root>
-
Voeg een item toe aan het FileVault-filter in
ui.apps/src/main/content/META-INF/vault/filter.xml
:code language-xml <?xml version="1.0" encoding="UTF-8"?> <workspaceFilter version="1.0"> ... <filter root="/oak:index/damAssetLucene-8-custom-1"/> </workspaceFilter>
-
Voeg een configuratiebestand voor Apache Tika toe in:
ui.apps/src/main/content/jcr_root/_oak_index/damAssetLucene-8-custom-1/tika/config.xml
code language-xml <properties> <detectors> <detector class="org.apache.tika.detect.TypeDetector"/> </detectors> <parsers> <parser class="org.apache.tika.parser.DefaultParser"> <mime>text/plain</mime> </parser> </parsers> <service-loader initializableProblemHandler="ignore" dynamic="true"/> </properties>
-
Zorg ervoor dat uw configuratie met de richtlijnen in de sectie van de Configuratie van het Projectwordt verstrekt in overeenstemming is. Breng de nodige aanpassingen aan.
Projectconfiguratie
We raden u ten zeerste aan om versie >= 1.3.2
van het Jackrabbit filevault-package-maven-plugin
te gebruiken. U kunt dit als volgt in uw project opnemen:
-
Werk de versie op het hoogste niveau bij
pom.xml
:code language-xml <plugin> <groupId>org.apache.jackrabbit</groupId> <artifactId>filevault-package-maven-plugin</artifactId> ... <version>1.3.2</version> ... </plugin>
-
Voeg het volgende toe aan het hoogste niveau
pom.xml
:code language-xml <jackrabbit-packagetype> <options> <immutableRootNodeNames>apps,libs,oak:index</immutableRootNodeNames> </options> </jackrabbit-packagetype>
Hier volgt een voorbeeld van het bestand op hoofdniveau van het project
pom.xml
met de bovenstaande configuraties:Bestandsnaam:
pom.xml
code language-xml <plugin> <groupId>org.apache.jackrabbit</groupId> <artifactId>filevault-package-maven-plugin</artifactId> ... <version>1.3.2</version> <configuration> ... <validatorsSettings> <jackrabbit-packagetype> <options> <immutableRootNodeNames>apps,libs,oak:index</immutableRootNodeNames> </options> </jackrabbit-packagetype> ... ... </plugin>
-
In
ui.apps/pom.xml
enui.apps.structure/pom.xml
is het nodig om de optiesallowIndexDefinitions
ennoIntermediateSaves
in te schakelen in het dialoogvensterfilevault-package-maven-plugin
. Als uallowIndexDefinitions
inschakelt, zijn aangepaste indexdefinities mogelijk, terwijlnoIntermediateSaves
ervoor zorgt dat de configuraties automatisch worden toegevoegd.Bestandsnamen:
ui.apps/pom.xml
enui.apps.structure/pom.xml
code language-xml <plugin> <groupId>org.apache.jackrabbit</groupId> <artifactId>filevault-package-maven-plugin</artifactId> <configuration> <allowIndexDefinitions>true</allowIndexDefinitions> <properties> <cloudManagerTarget>none</cloudManagerTarget> <noIntermediateSaves>true</noIntermediateSaves> </properties> ... </plugin>
-
Voeg een filter voor
/oak:index
inui.apps.structure/pom.xml
toe:code language-xml <filters> ... <filter><root>/oak:index</root></filter> </filters>
Implementeer de nieuwe toepassing met Cloud Manager nadat u de nieuwe indexdefinitie hebt toegevoegd. Deze implementatie start twee taken, die verantwoordelijk zijn voor het toevoegen (en indien nodig samenvoegen) van de indexdefinities aan respectievelijk MongoDB en Azure Segment Store voor auteur en publicatie. Vóór de omschakeling, ondergaan de onderliggende bewaarplaatsen opnieuw in overeenstemming met de bijgewerkte indexdefinities.
Indexbeheer met behulp van rollende implementaties index-management-using-rolling-deployments
Wat is indexbeheer what-is-index-management
Indexbeheer gaat over het toevoegen, verwijderen en wijzigen van indexen. Het veranderen van de definitie van een index is snel, maar het toepassen van de verandering (vaak genoemd "bouwend een index", of, voor bestaande indexen, "het opnieuw indexeren"vereist tijd. Het is niet onmiddellijk: de gegevensopslagruimte moet gescand worden om de gegevens te indexeren.
Wat zijn de Rolling Plaatsingen what-are-rolling-deployments
Een rolplaatsing kan onderbreking verminderen. Het staat ook voor nul downtime verbeteringen toe en verstrekt snelle terugschroeven van prijzen. De oude versie van de toepassing wordt tegelijk met de nieuwe versie van de toepassing uitgevoerd.
Alleen-lezen en Gebieden lezen/schrijven read-only-and-read-write-areas
Bepaalde delen van de opslagplaats (alleen-lezen onderdelen van de opslagplaats) kunnen verschillend zijn in de oude en de nieuwe versie van de toepassing. De gebieden met het kenmerk Alleen-lezen van de gegevensopslagruimte zijn doorgaans /app
en /libs
. In het volgende voorbeeld wordt cursief gebruikt voor het markeren van alleen-lezen gebieden, terwijl vet wordt gebruikt voor lezen-schrijven gebieden.
- /
- /apps (alleen-lezen)
- /content
- /libs (alleen-lezen)
- /eak:index
- /eak:index/acme.
- /jcr:system
- /system
- /var
De lees-schrijfgebieden van de opslagplaats worden gedeeld tussen alle versies van de toepassing, terwijl er voor elke versie van de toepassing een specifieke set /apps
en /libs
is.
Indexbeheer zonder doorlopende implementaties index-management-without-rolling-deployments
Tijdens de ontwikkeling, of wanneer het gebruiken van installaties op-gebouw, kunnen de indexen worden toegevoegd, worden verwijderd, of bij runtime worden veranderd. Indexen worden gebruikt wanneer ze beschikbaar zijn. Als een index nog niet in de oude versie van de toepassing wordt gebruikt, dan wordt de index typisch gebouwd tijdens een geplande onderbreking. Hetzelfde geldt wanneer u een index verwijdert of een bestaande index wijzigt. Wanneer u een index verwijdert, is deze niet meer beschikbaar wanneer u de index verwijdert.
Indexbeheer met doorlopende implementaties index-management-with-rolling-deployments
Met het rollen plaatsingen, is er geen onderbreking. Gedurende een update worden zowel de oude versie (bijvoorbeeld versie 1) van de toepassing als de nieuwe versie (versie 2) tegelijkertijd uitgevoerd op dezelfde opslagplaats. Als voor versie 1 een bepaalde index beschikbaar moet zijn, mag deze index niet worden verwijderd in versie 2. De index moet later worden verwijderd, bijvoorbeeld in versie 3, waarna gegarandeerd is dat versie 1 van de toepassing niet meer wordt uitgevoerd. Ook, zouden de toepassingen zodanig moeten worden geschreven dat versie 1 goed werkt, zelfs als versie 2 loopt, en als de indexen van versie 2 beschikbaar zijn.
Nadat de upgrade naar de nieuwe versie is voltooid, kunnen oude indexen door het systeem worden opgeschoond. De oude indexen blijven misschien nog een tijdje, om terugdraaiversies te versnellen (als een terugdraaiing nodig zou moeten zijn).
In de volgende tabel worden vijf indexdefinities weergegeven: index cqPageLucene
wordt in beide versies gebruikt, terwijl index damAssetLucene-custom-1
alleen in versie 2 wordt gebruikt.
<indexName>-custom-<customerVersionNumber>
nodig om deze te markeren als vervanging voor een bestaande index.Het versienummer wordt telkens verhoogd wanneer de index wordt gewijzigd. Als u wilt voorkomen dat aangepaste indexnamen botsen met indexnamen van het product zelf, moeten aangepaste indexen en wijzigingen in indexen die buiten het vak staan, eindigen met -custom-<number>
.
Wijzigingen in indexen buiten de box changes-to-out-of-the-box-indexes
Nadat de Adobe een uit-van-de-doos index zoals "damAssetLucene"of "cqPageLucene"verandert, wordt een nieuwe index genoemd damAssetLucene-2
of cqPageLucene-2
gecreeerd. Of als de index al is aangepast, wordt de aangepaste indexdefinitie samengevoegd met de wijzigingen in de index buiten het vak, zoals hieronder wordt weergegeven. Het samenvoegen van wijzigingen gebeurt automatisch. Dat betekent dat u niets hoeft te doen als een index buiten de doos verandert. Het is echter mogelijk de index later opnieuw aan te passen.
Het is belangrijk om op te merken dat de milieu's op verschillende AEM versies zouden kunnen zijn. De dev
-omgeving staat bijvoorbeeld op de release X+1
terwijl het werkgebied en de prod nog steeds op de release staan X
en wachten op upgrade tot de X+1
-omgeving wordt uitgebracht nadat de vereiste tests op dev
zijn uitgevoerd. Als release X+1
wordt geleverd met een nieuwere versie van een productindex die is aangepast en een nieuwe aanpassing van die index is vereist, wordt in de volgende tabel uitgelegd welke versies moeten worden ingesteld in omgevingen die zijn gebaseerd op de AEM release:
Huidige beperkingen current-limitations
Indexbeheer wordt alleen ondersteund voor indexen van het type lucene
met compatVersion
ingesteld op 2
. Intern, zouden andere indexen voor vragen, bijvoorbeeld, Elasticsearch indexen kunnen worden gevormd en worden gebruikt. Query's die op basis van de damAssetLucene
-index zijn geschreven, kunnen in AEM as a Cloud Service worden uitgevoerd op een versie van deze index die Elasticsearch is. Dit verschil is onzichtbaar voor de gebruiker van de toepassing, maar bepaalde gereedschappen, zoals de functie explain
, rapporteren een andere index. Voor verschillen tussen Lucene en Elasticsearch indexen, zie de documentatie van de Elasticsearch in Apache Jackrabbit Oak. Klanten kunnen en hoeven Elasticsearch-indexen niet rechtstreeks te configureren.
Alleen ingebouwde analysatoren worden ondersteund (dat wil zeggen de analysatoren die bij het product worden geleverd). Aangepaste analysatoren worden niet ondersteund.
Het indexeren van de inhoud van /oak:index
wordt momenteel niet ondersteund.
Voor de beste operationele prestaties, zouden de indexen niet bovenmatig groot moeten zijn. De totale grootte van alle indexen kan als richtlijn worden gebruikt. Als deze grootte na het toevoegen van aangepaste indexen met meer dan 100% toeneemt en de standaardindexen in een ontwikkelomgeving zijn aangepast, moeten de aangepaste indexdefinities worden aangepast. AEM as a Cloud Service kan voorkomen dat indexen worden geïmplementeerd die de stabiliteit en prestaties van het systeem negatief beïnvloeden.
Een index toevoegen adding-an-index
Als u een volledig aangepaste index met de naam /oak:index/acme.product-custom-1
wilt toevoegen die in een nieuwe versie van de toepassing en hoger wordt gebruikt, moet de index als volgt worden geconfigureerd:
acme.product-1-custom-1
Deze configuratie werkt door een douane herkenningsteken aan de indexnaam vooraf in te stellen, die door een punt (.
) wordt gevolgd. De id moet uit 2 tot 5 tekens bestaan.
Zoals hierboven, zorgt deze configuratie ervoor dat de index slechts door de nieuwe versie van de toepassing wordt gebruikt.
Index wijzigen changing-an-index
Wanneer een bestaande index wordt gewijzigd, moet een nieuwe index met de gewijzigde indexdefinitie worden toegevoegd. Stel bijvoorbeeld dat de bestaande index /oak:index/acme.product-custom-1
is gewijzigd. De oude index wordt opgeslagen onder /oak:index/acme.product-custom-1
en de nieuwe index wordt opgeslagen onder /oak:index/acme.product-custom-2
.
De oude versie van de toepassing gebruikt de volgende configuratie:
/oak:index/acme.product-custom-1
De nieuwe versie van de toepassing gebruikt de volgende (veranderde) configuratie:
/oak:index/acme.product-custom-2
Een wijziging ongedaan maken undoing-a-change
Soms wordt het nodig om een wijziging in een indexdefinitie ongedaan te maken. Dit kan gebeuren als er een onbedoelde fout optreedt of als de wijziging niet langer vereist is. Neem bijvoorbeeld de indexdefinitie damAssetLucene-8-custom-3,
die per ongeluk is gemaakt en al is geïmplementeerd. Daarom wilt u terugkeren naar de vorige indexdefinitie, damAssetLucene-8-custom-2.
hiervoor moet u een nieuwe index met de naam damAssetLucene-8-custom-4
invoeren die de definitie van de vorige index bevat, damAssetLucene-8-custom-2.
Een index verwijderen removing-an-index
Het volgende is alleen van toepassing op aangepaste indexen. Productindexen kunnen niet worden verwijderd omdat ze door AEM worden gebruikt.
Een aangepaste index kan in een recentere versie van de klantentoepassing worden verwijderd, door het uit de klantenbewaarplaats te verwijderen. Een index die uit de gegevensopslagplaats wordt verwijderd wordt niet gebruikt voor vragen in AEM hoewel het nog wel een tijdje aanwezig kan zijn in de instanties. Er is een opschoningsmechanisme aanwezig dat regelmatig wordt uitgevoerd en oudere versies van indexen van de instanties opruimt.
Optimalisatie van index en query index-query-optimizations
Met Apache Jackrabbit Oak kunnen flexibele indexconfiguraties zoekopdrachten efficiënt verwerken. Indexen zijn vooral belangrijk voor grotere opslagplaatsen. Zorg ervoor dat alle vragen door een aangewezen index worden gesteund. De vragen zonder een geschikte index kunnen duizenden knopen lezen, die dan als waarschuwing worden geregistreerd.
Zie dit documentvoor informatie over hoe de vragen en de indexen kunnen worden geoptimaliseerd.