Pipeline d'index URL Ingest

Les mappages de données complets à partir de la spécification, de la base de données et du schéma sont affichés pour la catégorie URL.

Spécification des données d'URL

_id Chaîne UUID ​SEOURL.SEOURL_ID
identifier Chaîne URL de référencement relative et identificateur unique pour cet enregistrement shop/womens/bottomsunique identifier (pas de barre oblique) SEOURLKEYWORD​.​URLKEYWORD​

état

entier Statut actuel de l'URL : 0 - Inactive SEOURL1 - Active SEOURL2 - Expired SEOURL SEOURLKEYWORD.STATUS​
storeId entier ID de magasin de cette URL de référencement
languageId entier ID de langue pour cette URL -1
tokenName Chaîne Nom représentant le type de la page StaticPagesToken, ProductToken, CategoryToken ​SEOURL.TOKENNAME
​tokenValue Chaîne Identificateur de page ou d'objet qui représente la page c.-à-d. 10001 SEOURL.TOKENVALUE qui peut se mapper à CATGROUP.CATGROUP_IDCATENTRY.CATENTRY_ID ou à un identificateur de page statique
​tokenExternalValue Chaîne Identificateur de l'identificateur d'objet externe de l'objet identifié dans tokenValue c'est-à-dire Bath c.-à-d. BR-ACCE-0001​ L'identificateur externe des valeurs TOKENVALUE et TOKENNAME données. Si TOKENNAME est CategoryToken, cette zone est mappée à CATGROUP.IDENTIFIER et si TOKENNAME est ProductToken, alors cette zone est mappée à CATENTRY.PARTNUMBER
redirectURL Chaîne URL à rediriger si seoURL est inactif /shop/womens/modern/bottoms (url à rediriger le cas échéant avec barre oblique ou entièrement qualifiée si dirigée vers l'extérieur) ​SEOURLKEYWORD.URLKEYWORD pour SEOREDIRECT.SEOURLKEYWD_NEW de l'enregistrement connexe
page.name Chaîne Nom de la page CategoryPage, ProductPage, HomePage ​SEOPAGEDEF.PAGENAME
​page.type Chaîne Type de page pour qualifier le type de page Utilisé avec pageName pour qualifier la page. CategoryPage, ProductListingPage, ProductPage, ItemPage, BundlePage, KitPage, DynamicKitPage Zone dérivée
​​page.layoutName Chaîne Identificateur de présentation facultatif pour remplacer la page Pour 9.1 - utilisé pour remplacer une page d'affichage de catégorie ou de produit Zone dérivée
page.title Chaîne Métadonnées de titre de page pour le référencement Bas pour femmes | Jjill ​SEOPAGEDEFDESC.TITLE
page.metaDescription Chaîne Description de métadonnées de page pour référencement ​SEOPAGEDEFDESC.META_DESC
page.metaKeyword Chaîne Mot clé/balises métadonnées de page pour référencement ​SEOPAGEDEFDESC.META_KEYWORD
page.imageAlternateDescription Chaîne Descriptions alternatives d'image de page ​SEOPAGEDEFDESC.IMAGE_ALT_DESC

Mappage de la zone d'index URL à partir de la base de données

La séquence d'étapes suivante illustre le pipeline d'indexation URL implémenté dans Apache NiFi. Des exemples étendus sont disponibles pour chaque étape. Ils sont fournis dans les sections inférieures de cette rubrique. Les exemples incluent le code SQL, les informations de tableau de schéma et les exemples d'entrées et de sorties. Le flux se compose principalement de sept étapes :
  1. Créer un document URL de catégorie
  2. Créer un document URL de produit
  3. Mettre à jour le type de page pour le document URL de catégorie
  4. Mettre à jour l'URL Catégorie pour la langue de repli
  5. Mettre à jour l'URL Produit pour la langue de repli
  6. Mettre à jour l'URL de référencement vers le document Catégorie
  7. Mettre à jour l'URL de référencement vers le document Produit

Etape 1 : Créer un document URL de catégorie

Cette étape décrit comment les données URL de référencement de catégorie peuvent être transformées et chargées dans l'index URL. Il commence par exécuter l'instruction SQL suivante pour récupérer les données Catégorie depuis la base de données Commerce :
 (SELECT A.SEOURL_ID, B.SEOURLKEYWORD_ID, B.URLKEYWORD, B.MOBILEURLKEYWORD, B.STOREENT_ID, B.STATUS,
		       B.LANGUAGE_ID, C.SEOURLKWD_ID_NEW, D.URLKEYWORD URLKEYWORD_NEW, A.TOKENNAME, A.TOKENVALUE, L.LOCALENAME,
		       P.DISPLAYNAME, P.DESCRIPTION, P.CATGROUP_ID, P.NAME, P.SHORTDESCRIPTION, P.KEYWORD,
		       P.SITE_SEOPAGEDEF_ID, P.SITE_PAGENAME, P.SITE_TITLE, P.SITE_META_DESC, P.SITE_META_KEYWORD,
		       P.SITE_IMAGE_ALT_DESC, P.SITE_OBJECT_ID, P.SITE_STOREENT_ID, P.IDENTIFIER,
	           P.OVERRIDE_SEOPAGEDEF_ID, P.OVERRIDE_PAGENAME, P.OVERRIDE_TITLE, P.OVERRIDE_META_DESC,
	           P.OVERRIDE_META_KEYWORD, P.OVERRIDE_IMAGE_ALT_DESC, P.OVERRIDE_OBJECT_ID, TO_CHAR(P.OVERRIDE_STOREENT_ID) OVERRIDE_STOREENT_ID
		  FROM SEOURL A, SEOURLKEYWORD B
			   LEFT OUTER JOIN SEOREDIRECT C ON B.SEOURLKEYWORD_ID=C.SEOURLKWD_ID_ORIG
			   LEFT OUTER JOIN SEOURLKEYWORD D ON C.SEOURLKWD_ID_NEW=D.SEOURLKEYWORD_ID
			   LEFT OUTER JOIN LANGUAGE L ON B.LANGUAGE_ID = L.LANGUAGE_ID
			   LEFT OUTER JOIN (
					SELECT COALESCE(S.DISPLAYNAME, SD.DISPLAYNAME) DISPLAYNAME,
					       COALESCE(S.DESCRIPTION, SD.DESCRIPTION) DESCRIPTION, 
					       CG.IDENTIFIER, CD.CATGROUP_ID, CD.NAME, CD.KEYWORD, CD.SHORTDESCRIPTION,
					       E.SEOPAGEDEF_ID SITE_SEOPAGEDEF_ID,
					       E.PAGENAME SITE_PAGENAME,
					       E.TITLE SITE_TITLE,
					       E.META_DESC SITE_META_DESC,
					       E.META_KEYWORD SITE_META_KEYWORD,
					       E.IMAGE_ALT_DESC SITE_IMAGE_ALT_DESC,
					       E.OBJECT_ID SITE_OBJECT_ID,
					       E.STOREENT_ID SITE_STOREENT_ID,
					       F.SEOPAGEDEF_ID OVERRIDE_SEOPAGEDEF_ID,
					       F.PAGENAME OVERRIDE_PAGENAME,
					       F.TITLE OVERRIDE_TITLE,
					       F.META_DESC OVERRIDE_META_DESC,
					       F.META_KEYWORD OVERRIDE_META_KEYWORD,
					       F.IMAGE_ALT_DESC OVERRIDE_IMAGE_ALT_DESC,
					       F.OBJECT_ID OVERRIDE_OBJECT_ID,
					       F.STOREENT_ID OVERRIDE_STOREENT_ID
					  FROM STOREENTDS S
					       INNER JOIN STORE ST ON S.STOREENT_ID=ST.STORE_ID
					       INNER JOIN CATGRPDESC CD ON S.LANGUAGE_ID=CD.LANGUAGE_ID ${extCatgroupAndSQL1b}
						   INNER JOIN CATGROUP CG ON CG.CATGROUP_ID=CD.CATGROUP_ID
						   ${TI_DELTA_CG_URL_JOIN_QUERY}
					       INNER JOIN STOREENTDS SD ON ST.STORE_ID=SD.STOREENT_ID
					       LEFT OUTER JOIN (
					       		SELECT SC.OBJECT_ID OBJECT_ID,
					       			   SA.SEOPAGEDEF_ID SEOPAGEDEF_ID,
					       			   SA.PAGENAME PAGENAME,
					       			   SB.TITLE TITLE,
					       			   SB.META_DESC META_DESC,
					       			   SB.META_KEYWORD META_KEYWORD,
					       			   SB.IMAGE_ALT_DESC IMAGE_ALT_DESC,
					       			   SA.STOREENT_ID STOREENT_ID
					              FROM SEOPAGEDEF SA, SEOPAGEDEFDESC SB, SEOPAGEDEFOVR SC
					 			 WHERE SA.SEOPAGEDEF_ID=SB.SEOPAGEDEF_ID AND SA.SEOPAGEDEF_ID=SC.SEOPAGEDEF_ID
					   			   AND SA.STOREENT_ID IN (SELECT RELATEDSTORE_ID FROM STOREREL
					   			   					      WHERE STORE_ID=${param.storeId} AND STRELTYP_ID=-4)
					   			   AND SB.LANGUAGE_ID=${param.langId}
					   			   AND SC.OBJECTTYPE = 'CatalogGroup') E ON E.OBJECT_ID = 0
					       LEFT OUTER JOIN (
					       		SELECT SC.OBJECT_ID OBJECT_ID,
					       			   SA.SEOPAGEDEF_ID SEOPAGEDEF_ID,
					       			   SA.PAGENAME PAGENAME,
					       			   SB.TITLE TITLE,
					       			   SB.META_DESC META_DESC,
					       			   SB.META_KEYWORD META_KEYWORD,
					       			   SB.IMAGE_ALT_DESC IMAGE_ALT_DESC,
					       			   SA.STOREENT_ID STOREENT_ID
					              FROM SEOPAGEDEF SA, SEOPAGEDEFDESC SB, SEOPAGEDEFOVR SC
					 			 WHERE SA.SEOPAGEDEF_ID=SB.SEOPAGEDEF_ID AND SA.SEOPAGEDEF_ID=SC.SEOPAGEDEF_ID
					   			   AND SA.STOREENT_ID IN (SELECT RELATEDSTORE_ID FROM STOREREL
					   			   					      WHERE STORE_ID=${param.storeId} AND STRELTYP_ID=-4)
					   			   AND SB.LANGUAGE_ID=${param.langId}
					   			   AND SC.OBJECTTYPE = 'CatalogGroup') F ON F.OBJECT_ID = CD.CATGROUP_ID
					 WHERE ST.STORE_ID=${param.storeId}
					   AND (( S.STOREENT_ID=ST.STORE_ID AND S.LANGUAGE_ID=${param.langId} )
					    OR  ( SD.LANGUAGE_ID=ST.LANGUAGE_ID ))
			   ) P ON P.CATGROUP_ID IN (
				 SELECT C.CATGROUP_ID
				   FROM CATGRPREL R, CATGROUP C
				  WHERE R.CATALOG_ID = ${param.catalogId}
				    AND R.CATALOG_ID IN (SELECT CATALOG_ID FROM STORECAT WHERE STOREENT_ID IN
				        (SELECT RELATEDSTORE_ID FROM STOREREL WHERE STATE = 1 AND STRELTYP_ID = -4 AND STORE_ID = ${param.storeId}))
				    AND R.CATGROUP_ID_CHILD = C.CATGROUP_ID AND C.MARKFORDELETE = 0
				  UNION
				 SELECT C.CATGROUP_ID
				   FROM CATTOGRP R, CATGROUP C
				  WHERE R.CATALOG_ID = ${param.catalogId}
				    AND R.CATALOG_ID IN (SELECT CATALOG_ID FROM STORECAT WHERE STOREENT_ID IN
				        (SELECT RELATEDSTORE_ID FROM STOREREL WHERE STATE = 1 AND STRELTYP_ID = -4 AND STORE_ID = ${param.storeId}))
				    AND R.CATGROUP_ID = C.CATGROUP_ID AND C.MARKFORDELETE = 0)
		 WHERE B.STOREENT_ID IN
		       (SELECT RELATEDSTORE_ID FROM STOREREL E WHERE E.STORE_ID=${param.storeId} AND E.STRELTYP_ID=-4)
		   AND A.SEOURL_ID=B.SEOURL_ID AND B.LANGUAGE_ID=${param.langId} AND A.TOKENNAME IN ('CategoryToken')
		   AND A.TOKENVALUE = P.CATGROUP_ID) ORDER BY SEOURL_ID 
                 OFFSET ${param.offset} ROWS FETCH NEXT ${param.pageSize} ROWS ONLY
Ensuite, le jeu de résultats est transmis au processeur CreateCategorytURLDocumentFromDatabase​ pour transformation, à l'aide du tableau suivant pour ​mapper la zone de base de données renvoyée depuis l'instruction SQL ci-dessus vers une zone d'index dans l'index URL :​
Nom de zone d'index Type et options de zone d'index ​​Description
Métadonnées internes
_id interne id/store + id/url
_ _méta/version/min entier Version minimale compatible de l'exécution pour utiliser ce document
​__meta/version/max entier ​Dernière version compatible de l'exécution qui fonctionne avec ce document
​​__meta/created date Date et heure de création de ce document​
__meta/modified date Date et heure de la dernière modification de ce document
Identificateur du document.
​id/store id_​string ID interne du magasin propriétaire
id/langue id_​string L'identificateur de la langue actuelle
id/​catalog id_string L'identificateur du catalogue de vente en cours
​id/​url id_​string L'UUID interne de cette URL de référencement ; mappé à SEOURL.SEOURL_ID
​identifier/specification id_​string Défini sur "URL"
identificateur/magasin id_​string Une chaîne qui identifie de façon unique le magasin propriétaire
​identifier/language id_​string Le paramètre régional linguistique de cette URL
​identifier/url id_​string URL de référencement relative et identificateur unique pour cet enregistrement - l'identificateur externe pour les valeurs TOKENVALUE et TOKENNAME données. Remarque : ne doit pas inclure de barre oblique dans cette URL de référencement
Propriétés
​token/name id_​string Nom représentant le type de la page : StaticPagesToken, ProductToken, CategoryTokenMapped à SEOURL.TOKENNAME
​token/id id_​string Identificateur de page ou d'objet qui représente la page ; mappé à SEOURL.TOKENVALUE
​token/identifier id_​string Identificateur de l'identificateur d'objet externe de l'objet identifié dans tokenValue
état entier Statut actuel de l'URL : 0 - Inactive SEOURL1 - Active SEOURL2 - Expired SEOURL Mappé à SEOURLKEYWORD.STATUS
redirect ​​raw Une URL partielle ou entièrement qualifiée vers laquelle rediriger si cette URL est inactive ; mappé à SEOURLKEYWORD.URLKEYWORD pour SEOREDIRECT.SEOURLKEYWD_NEW de l'enregistrement connexe
Page des métadonnées
page/​name ​​raw Le nom de la page ; mappé à SEOPAGEDEF.PAGENAME
page/type ​​raw Cette zone est utilisé pour qualifier le type de page et est utilisé avec pageName pour qualifier la page : CategoryPage, ProductListPage, ProductPage, ItemPage, BundlePage, KitPage, DynamicKitPage, VariantPage
page/layout ​​raw Identificateur de présentation facultatif pour remplacer la page
page/title ​​raw Métadonnées de titre de page pour référencement ; mappé à SEOPAGEDEFDESC.TITLE
page/​​meta/description ​​raw Description de métadonnées de page pour référencement ; mappé à SEOPAGEDEFDESC.META_DESC
page/meta/keyword raw Mot clé/balises de métadonnées de page pour référencement ; mappé à SEOPAGEDEFDESC.META_KEYWORD
page/meta/image ​​raw Descriptions alternatives d'image de page ; mappé à SEOPAGEDEFDESC.IMAGE_ALT_DESC
template/​name ​​raw Modèle de référencement pour générer ce nom de page
template/title ​​raw Modèle de référencement pour générer ces métadonnées de titre de page ; mappé à SEOPAGEDEFDESC.TITLE
template/​​meta/description ​​raw Modèle de référencement pour générer cette description de métadonnées de page ; mappé à SEOPAGEDEFDESC.META_DESC
template/meta/keyword raw Modèle de référencement pour générer ces mots clés/balises de métadonnées de page ; mappé à SEOPAGEDEFDESC.META_KEYWORD
template/meta/image ​​raw Modèle de référencement pour générer ces descriptions alternatives d'image de page ; mappé à SEOPAGEDEFDESC.IMAGE_ALT_DESC
Pour un exemple de code, voir les exemples de l'étape 1.

Etape 2 : Créer un document URL de produit

Cette étape décrit comment les données URL de référencement de produit peuvent être transformées et chargées dans l'index URL.

Il commence par exécuter l'instruction SQL suivante pour récupérer les données de produit depuis la base de données Commerce :
 (SELECT A.SEOURL_ID, B.SEOURLKEYWORD_ID, B.URLKEYWORD, B.MOBILEURLKEYWORD, B.STOREENT_ID, B.STATUS,
			B.LANGUAGE_ID, C.SEOURLKWD_ID_NEW, D.URLKEYWORD URLKEYWORD_NEW, A.TOKENNAME, A.TOKENVALUE, L.LOCALENAME,
			P.DISPLAYNAME, P.DESCRIPTION, P.CATENTRY_ID, P.NAME, P.SHORTDESCRIPTION,
			P.KEYWORD, P.PARTNUMBER, P.MFNAME, P.MFPARTNUMBER, P.CATENTTYPE_ID,
			P.SITE_SEOPAGEDEF_ID, P.SITE_PAGENAME, P.SITE_TITLE, P.SITE_META_DESC, P.SITE_META_KEYWORD,
			P.SITE_IMAGE_ALT_DESC, P.SITE_OBJECT_ID, P.SITE_STOREENT_ID,
			P.OVERRIDE_SEOPAGEDEF_ID, P.OVERRIDE_PAGENAME, P.OVERRIDE_TITLE, P.OVERRIDE_META_DESC,
			P.OVERRIDE_META_KEYWORD, P.OVERRIDE_IMAGE_ALT_DESC, P.OVERRIDE_OBJECT_ID, P.OVERRIDE_STOREENT_ID
	      FROM SEOURL A, SEOURLKEYWORD B
			LEFT OUTER JOIN SEOREDIRECT C ON B.SEOURLKEYWORD_ID=C.SEOURLKWD_ID_ORIG
			LEFT OUTER JOIN SEOURLKEYWORD D ON C.SEOURLKWD_ID_NEW=D.SEOURLKEYWORD_ID
			LEFT OUTER JOIN LANGUAGE L ON B.LANGUAGE_ID = L.LANGUAGE_ID
			LEFT OUTER JOIN (
				 SELECT COALESCE(S.DISPLAYNAME, SD.DISPLAYNAME) DISPLAYNAME,
						COALESCE(S.DESCRIPTION, SD.DESCRIPTION) DESCRIPTION,
						CE.CATENTRY_ID, CD.NAME, CD.SHORTDESCRIPTION, CE.CATENTTYPE_ID,
						CD.KEYWORD, CE.PARTNUMBER, CE.MFNAME, CE.MFPARTNUMBER,
						E.SEOPAGEDEF_ID SITE_SEOPAGEDEF_ID,
						E.PAGENAME SITE_PAGENAME,
						E.TITLE SITE_TITLE,
						E.META_DESC SITE_META_DESC,
						E.META_KEYWORD SITE_META_KEYWORD,
						E.IMAGE_ALT_DESC SITE_IMAGE_ALT_DESC,
						E.OBJECT_ID SITE_OBJECT_ID,
						E.STOREENT_ID SITE_STOREENT_ID,
						F.SEOPAGEDEF_ID OVERRIDE_SEOPAGEDEF_ID,
						F.PAGENAME OVERRIDE_PAGENAME,
						F.TITLE OVERRIDE_TITLE,
						F.META_DESC OVERRIDE_META_DESC,
						F.META_KEYWORD OVERRIDE_META_KEYWORD,
						F.IMAGE_ALT_DESC OVERRIDE_IMAGE_ALT_DESC,
						F.OBJECT_ID OVERRIDE_OBJECT_ID,
						F.STOREENT_ID OVERRIDE_STOREENT_ID
				   FROM STOREENTDS S
						INNER JOIN STORE ST ON S.STOREENT_ID=ST.STORE_ID
						INNER JOIN CATENTDESC CD ON S.LANGUAGE_ID=CD.LANGUAGE_ID ${extCatentryAndSQL1b}
						INNER JOIN CATENTRY CE ON CD.CATENTRY_ID=CE.CATENTRY_ID
						${TI_DELTA_JOIN_QUERY_ATTCH}
						INNER JOIN STOREENTDS SD ON ST.STORE_ID=SD.STOREENT_ID
						LEFT OUTER JOIN (
								SELECT SC.OBJECT_ID OBJECT_ID,
									   SA.SEOPAGEDEF_ID SEOPAGEDEF_ID,
									   SA.PAGENAME PAGENAME,
									   SB.TITLE TITLE,
									   SB.META_DESC META_DESC,
									   SB.META_KEYWORD META_KEYWORD,
									   SB.IMAGE_ALT_DESC IMAGE_ALT_DESC,
									   SA.STOREENT_ID STOREENT_ID
							   FROM SEOPAGEDEF SA, SEOPAGEDEFDESC SB, SEOPAGEDEFOVR SC
							   WHERE SA.SEOPAGEDEF_ID=SB.SEOPAGEDEF_ID AND SA.SEOPAGEDEF_ID=SC.SEOPAGEDEF_ID
								   AND SA.STOREENT_ID IN (SELECT RELATEDSTORE_ID FROM STOREREL
															 WHERE STORE_ID=${param.storeId} AND STRELTYP_ID=-4)
								   AND SB.LANGUAGE_ID=${param.langId}
								   AND SC.OBJECTTYPE = 'CatalogEntry') E ON E.OBJECT_ID = 0
						LEFT OUTER JOIN (
								SELECT SC.OBJECT_ID OBJECT_ID,
									   SA.SEOPAGEDEF_ID SEOPAGEDEF_ID,
									   SA.PAGENAME PAGENAME,
									   SB.TITLE TITLE,
									   SB.META_DESC META_DESC,
									   SB.META_KEYWORD META_KEYWORD,
									   SB.IMAGE_ALT_DESC IMAGE_ALT_DESC,
									   SA.STOREENT_ID STOREENT_ID
							   FROM SEOPAGEDEF SA, SEOPAGEDEFDESC SB, SEOPAGEDEFOVR SC
							   WHERE SA.SEOPAGEDEF_ID=SB.SEOPAGEDEF_ID AND SA.SEOPAGEDEF_ID=SC.SEOPAGEDEF_ID
								   AND SA.STOREENT_ID IN (SELECT RELATEDSTORE_ID FROM STOREREL
															 WHERE STORE_ID=${param.storeId} AND STRELTYP_ID=-4)
								   AND SB.LANGUAGE_ID=${param.langId}
								   AND SC.OBJECTTYPE = 'CatalogEntry') F ON F.OBJECT_ID = CE.CATENTRY_ID
				  WHERE ST.STORE_ID=${param.storeId}
					AND (( S.STOREENT_ID=ST.STORE_ID AND S.LANGUAGE_ID=${param.langId} )
					 OR  ( SD.LANGUAGE_ID=ST.LANGUAGE_ID ))
			) P ON P.CATENTRY_ID IN (
			  SELECT C.CATENTRY_ID
				FROM CATGPENREL R, CATENTRY C
			   WHERE R.CATALOG_ID = ${param.catalogId} AND R.CATALOG_ID IN (SELECT CATALOG_ID FROM STORECAT WHERE STOREENT_ID IN
					 (SELECT RELATEDSTORE_ID FROM STOREREL WHERE STATE = 1 AND STRELTYP_ID = -4 AND STORE_ID = ${param.storeId}))
				 AND R.CATENTRY_ID = C.CATENTRY_ID AND C.MARKFORDELETE = 0
				 AND C.CATENTTYPE_ID IN ('ProductBean', 'ItemBean', 'VariantBean'))
	     WHERE B.STOREENT_ID IN
			(SELECT RELATEDSTORE_ID FROM STOREREL E WHERE E.STORE_ID=${param.storeId} AND E.STRELTYP_ID=-4)
		AND A.SEOURL_ID=B.SEOURL_ID AND B.LANGUAGE_ID=${param.langId} AND A.TOKENNAME IN ('ProductToken')
		AND A.TOKENVALUE = P.CATENTRY_ID) ORDER BY SEOURL_ID
             OFFSET ${param.offset} ROWS FETCH NEXT ${param.pageSize} ROWS ONLY

Ensuite, le jeu de résultats est transmis au processeur CreateProductURLDocumentFromDatabase​ pour transformation, à l'aide du même tableau ci-dessus pour ​mapper la zone de base de données renvoyée depuis l'instruction SQL ci-dessus vers une zone d'index dans l'index URL. Pour un exemple de code, voir les exemples de l'étape 2.

Etape 3 : Mettre à jour le type de page pour le document URL de catégorie

Cette étape décrit comment le type de page pour le document URL de catégorie peut être combiné avec le type de page approprié et stocké vers l'index URL.

Il commence par exécuter l'instruction SQL suivante pour récupérer les données de produit depuis la base de données Commerce :
SELECT B.SEOURLKEYWORD_ID		       
		  FROM SEOURL A, SEOURLKEYWORD B
		 WHERE B.STOREENT_ID IN
		       (SELECT RELATEDSTORE_ID FROM STOREREL E WHERE E.STORE_ID=${param.storeId} AND E.STRELTYP_ID=-4)
		   AND A.SEOURL_ID=B.SEOURL_ID AND B.LANGUAGE_ID=${param.langId} AND A.TOKENNAME IN ('CategoryToken')
		   AND A.TOKENVALUE IN (
				 SELECT P.CATGROUP_ID 
				   FROM CATGPENREL P,
						(SELECT G.CATGROUP_ID, R.CATALOG_ID
						   FROM CATGRPREL R, CATGROUP G
						  WHERE R.CATALOG_ID = ${param.catalogId}
						    AND R.CATALOG_ID IN (SELECT CATALOG_ID FROM STORECAT WHERE STOREENT_ID IN
									(SELECT RELATEDSTORE_ID FROM STOREREL WHERE STATE = 1 AND STRELTYP_ID = -4 AND STORE_ID = ${param.storeId}))
						    AND R.CATGROUP_ID_CHILD = G.CATGROUP_ID AND G.MARKFORDELETE = 0
						  UNION
						 SELECT G.CATGROUP_ID, R.CATALOG_ID
						   FROM CATTOGRP R, CATGROUP G
						  WHERE R.CATALOG_ID = ${param.catalogId}
						    AND R.CATALOG_ID IN (SELECT CATALOG_ID FROM STORECAT WHERE STOREENT_ID IN
									(SELECT RELATEDSTORE_ID FROM STOREREL WHERE STATE = 1 AND STRELTYP_ID = -4 AND STORE_ID = ${param.storeId}))
						    AND R.CATGROUP_ID = G.CATGROUP_ID AND G.MARKFORDELETE = 0) H
				 ${TI_DELTA_CG_URL_1C_JOIN_QUERY}
				 WHERE P.CATALOG_ID = H.CATALOG_ID AND P.CATGROUP_ID = H.CATGROUP_ID ${extCatgroupAndSQL1a}
			     UNION
                SELECT C.CATGROUP_ID
				  FROM CATGRPREL R, CATGROUP C
				 ${TI_DELTA_CG_JOIN_QUERY}
				 WHERE R.CATALOG_ID = ${param.catalogId} ${extCatgroupAndSQL}
				   AND R.CATALOG_ID IN (SELECT CATALOG_ID FROM STORECAT WHERE STOREENT_ID IN
						   (SELECT RELATEDSTORE_ID FROM STOREREL WHERE STATE = 1 AND STRELTYP_ID = -4 AND STORE_ID = ${param.storeId}))
				   AND R.CATGROUP_ID_CHILD = C.CATGROUP_ID AND C.MARKFORDELETE = 0 AND C.DYNAMIC = 1)
               ORDER BY B.SEOURLKEYWORD_ID
               OFFSET ${param.offset} ROWS FETCH NEXT ${param.pageSize} ROWS ONLY
Ensuite, le jeu de résultats est transmis au processeur UpdatePageTypeFromDatabase​​ pour transformation, à l'aide du tableau suivant pour ​mapper la zone de base de données renvoyée depuis l'instruction SQL ci-dessus vers une zone d'index dans l'index URL :​​
Nom de zone d'index Type de zone d'index ​​Description
page/type ​​raw Cette zone est utilisé pour qualifier le type de page et est utilisé avec pageName pour qualifier la page : CategoryPage, ProductListPage, ProductPage, ItemPage, BundlePage, KitPage, DynamicKitPage, VariantPage
Pour un exemple de code, voir les exemples de l'étape 3.

Etape 4 : Mettre à jour l'URL Catégorie pour la langue de repli

Cette étape décrit comment les données d'URL de référencement Catégorie pour la langue de repli peuvent être transformées et chargées dans l'index URL.​ Il commence par l'exécution de la requête Elasticsearch suivante sur l'index URL :
SELECT S.TOKENVALUE, SD.URLKEYWORD FROM SEOURL S, SEOURLKEYWORD SD 
			where S.SEOURL_ID IN(SELECT A.SEOURL_ID FROM SEOURL A
	           LEFT OUTER JOIN SEOURLKEYWORD B ON (A.SEOURL_ID=B.SEOURL_ID AND B.LANGUAGE_ID=${param.langId}
	                                                AND B.STOREENT_ID IN
	                                                    (SELECT RELATEDSTORE_ID FROM STOREREL E WHERE E.STORE_ID=${param.storeId} AND E.STRELTYP_ID=-4))
			   LEFT OUTER JOIN SEOREDIRECT C ON B.SEOURLKEYWORD_ID=C.SEOURLKWD_ID_ORIG
			   LEFT OUTER JOIN SEOURLKEYWORD D ON C.SEOURLKWD_ID_NEW=D.SEOURLKEYWORD_ID
			   LEFT OUTER JOIN LANGUAGE L ON B.LANGUAGE_ID = L.LANGUAGE_ID
			   LEFT OUTER JOIN (
					SELECT COALESCE(S.DISPLAYNAME, SD.DISPLAYNAME) DISPLAYNAME,
					       COALESCE(S.DESCRIPTION, SD.DESCRIPTION) DESCRIPTION, 
					       CG.IDENTIFIER, CD.CATGROUP_ID, CD.NAME, CD.KEYWORD, CD.SHORTDESCRIPTION,
					       E.SEOPAGEDEF_ID SITE_SEOPAGEDEF_ID,
					       E.PAGENAME SITE_PAGENAME,
					       E.TITLE SITE_TITLE,
					       E.META_DESC SITE_META_DESC,
					       E.META_KEYWORD SITE_META_KEYWORD,
					       E.IMAGE_ALT_DESC SITE_IMAGE_ALT_DESC,
					       E.OBJECT_ID SITE_OBJECT_ID,
					       E.STOREENT_ID SITE_STOREENT_ID,
					       F.SEOPAGEDEF_ID OVERRIDE_SEOPAGEDEF_ID,
					       F.PAGENAME OVERRIDE_PAGENAME,
					       F.TITLE OVERRIDE_TITLE,
					       F.META_DESC OVERRIDE_META_DESC,
					       F.META_KEYWORD OVERRIDE_META_KEYWORD,
					       F.IMAGE_ALT_DESC OVERRIDE_IMAGE_ALT_DESC,
					       F.OBJECT_ID OVERRIDE_OBJECT_ID,
					       F.STOREENT_ID OVERRIDE_STOREENT_ID
					  FROM STOREENTDS S
					       INNER JOIN STORE ST ON S.STOREENT_ID=ST.STORE_ID
					       INNER JOIN CATGRPDESC CD ON S.LANGUAGE_ID=CD.LANGUAGE_ID ${extCatgroupAndSQL1b}
						   INNER JOIN CATGROUP CG ON CG.CATGROUP_ID=CD.CATGROUP_ID
						   ${TI_DELTA_CG_URL_JOIN_QUERY}
					       INNER JOIN STOREENTDS SD ON ST.STORE_ID=SD.STOREENT_ID
					       LEFT OUTER JOIN (
					       		SELECT SC.OBJECT_ID OBJECT_ID,
					       			   SA.SEOPAGEDEF_ID SEOPAGEDEF_ID,
					       			   SA.PAGENAME PAGENAME,
					       			   SB.TITLE TITLE,
					       			   SB.META_DESC META_DESC,
					       			   SB.META_KEYWORD META_KEYWORD,
					       			   SB.IMAGE_ALT_DESC IMAGE_ALT_DESC,
					       			   SA.STOREENT_ID STOREENT_ID
					              FROM SEOPAGEDEF SA, SEOPAGEDEFDESC SB, SEOPAGEDEFOVR SC
					 			 WHERE SA.SEOPAGEDEF_ID=SB.SEOPAGEDEF_ID AND SA.SEOPAGEDEF_ID=SC.SEOPAGEDEF_ID
					   			   AND SA.STOREENT_ID IN (SELECT RELATEDSTORE_ID FROM STOREREL
					   			   					      WHERE STORE_ID=${param.storeId} AND STRELTYP_ID=-4)
					   			   AND SB.LANGUAGE_ID=${param.langId}
					   			   AND SC.OBJECTTYPE = 'CatalogGroup') E ON E.OBJECT_ID = 0
					       LEFT OUTER JOIN (
					       		SELECT SC.OBJECT_ID OBJECT_ID,
					       			   SA.SEOPAGEDEF_ID SEOPAGEDEF_ID,
					       			   SA.PAGENAME PAGENAME,
					       			   SB.TITLE TITLE,
					       			   SB.META_DESC META_DESC,
					       			   SB.META_KEYWORD META_KEYWORD,
					       			   SB.IMAGE_ALT_DESC IMAGE_ALT_DESC,
					       			   SA.STOREENT_ID STOREENT_ID
					              FROM SEOPAGEDEF SA, SEOPAGEDEFDESC SB, SEOPAGEDEFOVR SC
					 			 WHERE SA.SEOPAGEDEF_ID=SB.SEOPAGEDEF_ID AND SA.SEOPAGEDEF_ID=SC.SEOPAGEDEF_ID
					   			   AND SA.STOREENT_ID IN (SELECT RELATEDSTORE_ID FROM STOREREL
					   			   					      WHERE STORE_ID=${param.storeId} AND STRELTYP_ID=-4)
					   			   AND SB.LANGUAGE_ID=${param.langId}
					   			   AND SC.OBJECTTYPE = 'CatalogGroup') F ON F.OBJECT_ID = CD.CATGROUP_ID
					 WHERE ST.STORE_ID=${param.storeId}
					   AND (( S.STOREENT_ID=ST.STORE_ID AND S.LANGUAGE_ID=${param.langId} )
					    OR  ( SD.LANGUAGE_ID=ST.LANGUAGE_ID ))
			   ) P ON P.CATGROUP_ID IN (
				 SELECT C.CATGROUP_ID
				   FROM CATGRPREL R, CATGROUP C
				  WHERE R.CATALOG_ID = ${param.catalogId}
				    AND R.CATALOG_ID IN (SELECT CATALOG_ID FROM STORECAT WHERE STOREENT_ID IN
				        (SELECT RELATEDSTORE_ID FROM STOREREL WHERE STATE = 1 AND STRELTYP_ID = -4 AND STORE_ID = ${param.storeId}))
				    AND R.CATGROUP_ID_CHILD = C.CATGROUP_ID AND C.MARKFORDELETE = 0
				  UNION
				 SELECT C.CATGROUP_ID
				   FROM CATTOGRP R, CATGROUP C
				  WHERE R.CATALOG_ID = ${param.catalogId}
				    AND R.CATALOG_ID IN (SELECT CATALOG_ID FROM STORECAT WHERE STOREENT_ID IN
				        (SELECT RELATEDSTORE_ID FROM STOREREL WHERE STATE = 1 AND STRELTYP_ID = -4 AND STORE_ID = ${param.storeId}))
				    AND R.CATGROUP_ID = C.CATGROUP_ID AND C.MARKFORDELETE = 0)
		 WHERE A.TOKENNAME IN ('CategoryToken')
		   AND A.TOKENVALUE = P.CATGROUP_ID AND B.SEOURLKEYWORD_ID IS NULL) 
		   AND S.SEOURL_ID = SD.SEOURL_ID AND SD.LANGUAGE_ID = ${default.language} ORDER BY S.SEOURL_ID
	OFFSET ${param.offset} ROWS FETCH NEXT ${param.pageSize} ROWS ONLY​

Ensuite, le jeu de résultats est transmis au processeur UpdateCategoryURLFallbackFromDatabase pour transformation, à l'aide du tableau à l'étape 1 pour ​mapper la zone de base de données renvoyée depuis l'instruction SQL ci-dessus vers une zone d'index dans l'index URL.

Stage5: Mettre à jour l'URL Produit pour la langue de repli

Cette étape décrit comment les données d'URL de référencement Produit pour la langue de repli peuvent être transformées et chargées dans l'index URL.​ Il commence par l'exécution de la requête Elasticsearch suivante sur l'index URL :
 SELECT S.TOKENVALUE, SD.URLKEYWORD FROM SEOURL S, SEOURLKEYWORD SD 
	where S.SEOURL_ID IN(SELECT A.SEOURL_ID FROM SEOURL A
            LEFT OUTER JOIN SEOURLKEYWORD B ON (A.SEOURL_ID=B.SEOURL_ID AND B.LANGUAGE_ID=${param.langId}
                                                    AND B.STOREENT_ID IN
                                                        (SELECT RELATEDSTORE_ID FROM STOREREL E WHERE E.STORE_ID=${param.storeId} AND E.STRELTYP_ID=-4))
			LEFT OUTER JOIN SEOREDIRECT C ON B.SEOURLKEYWORD_ID=C.SEOURLKWD_ID_ORIG
			LEFT OUTER JOIN SEOURLKEYWORD D ON C.SEOURLKWD_ID_NEW=D.SEOURLKEYWORD_ID
			LEFT OUTER JOIN LANGUAGE L ON B.LANGUAGE_ID = L.LANGUAGE_ID
			LEFT OUTER JOIN (
				 SELECT COALESCE(S.DISPLAYNAME, SD.DISPLAYNAME) DISPLAYNAME,
						COALESCE(S.DESCRIPTION, SD.DESCRIPTION) DESCRIPTION,
						CE.CATENTRY_ID, CD.NAME, CD.SHORTDESCRIPTION, CE.CATENTTYPE_ID,
						CD.KEYWORD, CE.PARTNUMBER, CE.MFNAME, CE.MFPARTNUMBER,
						E.SEOPAGEDEF_ID SITE_SEOPAGEDEF_ID,
						E.PAGENAME SITE_PAGENAME,
						E.TITLE SITE_TITLE,
						E.META_DESC SITE_META_DESC,
						E.META_KEYWORD SITE_META_KEYWORD,
						E.IMAGE_ALT_DESC SITE_IMAGE_ALT_DESC,
						E.OBJECT_ID SITE_OBJECT_ID,
						E.STOREENT_ID SITE_STOREENT_ID,
						F.SEOPAGEDEF_ID OVERRIDE_SEOPAGEDEF_ID,
						F.PAGENAME OVERRIDE_PAGENAME,
						F.TITLE OVERRIDE_TITLE,
						F.META_DESC OVERRIDE_META_DESC,
						F.META_KEYWORD OVERRIDE_META_KEYWORD,
						F.IMAGE_ALT_DESC OVERRIDE_IMAGE_ALT_DESC,
						F.OBJECT_ID OVERRIDE_OBJECT_ID,
						F.STOREENT_ID OVERRIDE_STOREENT_ID
				   FROM STOREENTDS S
						INNER JOIN STORE ST ON S.STOREENT_ID=ST.STORE_ID
						INNER JOIN CATENTDESC CD ON S.LANGUAGE_ID=CD.LANGUAGE_ID ${extCatentryAndSQL1b}
						INNER JOIN CATENTRY CE ON CD.CATENTRY_ID=CE.CATENTRY_ID
						${TI_DELTA_JOIN_QUERY_ATTCH}
						INNER JOIN STOREENTDS SD ON ST.STORE_ID=SD.STOREENT_ID
						LEFT OUTER JOIN (
								SELECT SC.OBJECT_ID OBJECT_ID,
									   SA.SEOPAGEDEF_ID SEOPAGEDEF_ID,
									   SA.PAGENAME PAGENAME,
									   SB.TITLE TITLE,
									   SB.META_DESC META_DESC,
									   SB.META_KEYWORD META_KEYWORD,
									   SB.IMAGE_ALT_DESC IMAGE_ALT_DESC,
									   SA.STOREENT_ID STOREENT_ID
							   FROM SEOPAGEDEF SA, SEOPAGEDEFDESC SB, SEOPAGEDEFOVR SC
							   WHERE SA.SEOPAGEDEF_ID=SB.SEOPAGEDEF_ID AND SA.SEOPAGEDEF_ID=SC.SEOPAGEDEF_ID
								   AND SA.STOREENT_ID IN (SELECT RELATEDSTORE_ID FROM STOREREL
															 WHERE STORE_ID=${param.storeId} AND STRELTYP_ID=-4)
								   AND SB.LANGUAGE_ID=${param.langId}
								   AND SC.OBJECTTYPE = 'CatalogEntry') E ON E.OBJECT_ID = 0
						LEFT OUTER JOIN (
								SELECT SC.OBJECT_ID OBJECT_ID,
									   SA.SEOPAGEDEF_ID SEOPAGEDEF_ID,
									   SA.PAGENAME PAGENAME,
									   SB.TITLE TITLE,
									   SB.META_DESC META_DESC,
									   SB.META_KEYWORD META_KEYWORD,
									   SB.IMAGE_ALT_DESC IMAGE_ALT_DESC,
									   SA.STOREENT_ID STOREENT_ID
							   FROM SEOPAGEDEF SA, SEOPAGEDEFDESC SB, SEOPAGEDEFOVR SC
							   WHERE SA.SEOPAGEDEF_ID=SB.SEOPAGEDEF_ID AND SA.SEOPAGEDEF_ID=SC.SEOPAGEDEF_ID
								   AND SA.STOREENT_ID IN (SELECT RELATEDSTORE_ID FROM STOREREL
															 WHERE STORE_ID=${param.storeId} AND STRELTYP_ID=-4)
								   AND SB.LANGUAGE_ID=${param.langId}
								   AND SC.OBJECTTYPE = 'CatalogEntry') F ON F.OBJECT_ID = CE.CATENTRY_ID
				  WHERE ST.STORE_ID=${param.storeId}
					AND (( S.STOREENT_ID=ST.STORE_ID AND S.LANGUAGE_ID=${param.langId} )
					 OR  ( SD.LANGUAGE_ID=ST.LANGUAGE_ID ))
			) P ON P.CATENTRY_ID IN (
			  SELECT C.CATENTRY_ID
				FROM CATGPENREL R, CATENTRY C
			   WHERE R.CATALOG_ID = ${param.catalogId} AND R.CATALOG_ID IN (SELECT CATALOG_ID FROM STORECAT WHERE STOREENT_ID IN
					 (SELECT RELATEDSTORE_ID FROM STOREREL WHERE STATE = 1 AND STRELTYP_ID = -4 AND STORE_ID = ${param.storeId}))
				 AND R.CATENTRY_ID = C.CATENTRY_ID AND C.MARKFORDELETE = 0
				 AND C.CATENTTYPE_ID IN ('ProductBean', 'ItemBean', 'VariantBean'))
	  WHERE A.TOKENNAME IN ('ProductToken')
		AND A.TOKENVALUE = P.CATENTRY_ID AND B.SEOURLKEYWORD_ID IS NULL) 
		AND S.SEOURL_ID = SD.SEOURL_ID AND SD.LANGUAGE_ID = ${default.language} ORDER BY S.SEOURL_ID 
		OFFSET ${param.offset} ROWS FETCH NEXT ${param.pageSize} ROWS ONLY

​​Ensuite, le jeu de résultats est transmis au processeur UpdateProductURLFallbackFromDatabase pour transformation, à l'aide du tableau à l'étape 1 pour ​mapper la zone de base de données renvoyée depuis l'instruction SQL ci-dessus vers une zone d'index dans l'index URL.​

Etape 6 : Mettre à jour l'URL de référencement vers le document Catégorie

Cette étape décrit comment les données URL de référencement peuvent être récupérées à partir de l'index URL, puis chargées à nouveau dans l'index Catégorie. Il commence par exécuter la requête Elasticsearch suivante au niveau de l'index URL :
        {
	    "stored_fields": [
	        "identifier.url",
	        "token.id"
	    ],
	    "size": 10000,
	    "_source": false,
	    "query": {
	        "bool": {
	            "must_not": [
	                {
	                    "exists": {
	                        "field": "redirect"
	                    }
	                }
	            ],
	            "must": [
			{
			"terms": {
			    "token.name": [ "CategoryToken" ]
			}
	​		},
	                {
	                    "term": {
	                        "id.language": ${param.langId}
	                    }
	                },
	                {
	                    "term": {
	                        "id.store": ${param.storeId}
	                    }
	                }
	            ]
	        }
	    }
	}
Ensuite, le jeu de résultats est transmis au processeur UpdateCategoryURL​ pour transformation, à l'aide du tableau suivant pour ​mapper la zone de base de données renvoyée depuis l'instruction SQL ci-dessus vers une zone d'index dans l'index Produit :​​
Nom de zone d'index Type de zone d'index ​​Description
url/​​seo raw L'URL de référencement de cette entrée de catégorie ; assignée à partir de la zone identifier.url, depuis la requête de recherche ci-dessus
Pour un exemple de code, voir les exemples de l'étape 6.

Etape 7 : Mettre à jour l'URL de référencement vers le document Produit

Cette étape décrit comment les données URL de référencement peuvent être récupérées à partir de l'index URL, puis chargées à nouveau dans l'index Produit. Il commence par exécuter la requête Elasticsearch suivante au niveau de l'index URL :
       ​{
	    "stored_fields": [
	        "identifier.url",
	        "token.id"
	    ],
	    "size": 10000,
	    "_source": false,
	    "query": {
	        "bool": {
	            "must_not": [
	                {
	                    "exists": {
	                        "field": "redirect"
	                    }
	                }
	            ],
	            "must": [
			{
			    "terms": {
				"token.name": [ "ProductToken"​ ]
			    }
			},
	                {
	                    "term": {
	                        "id.language": ${param.langId}
	                    }
	                },
	                {
	                    "term": {
	                        "id.store": ${param.storeId}
	                    }
	                }
	            ]
	        }
	    }
	}
Ensuite, le jeu de résultats est transmis au processeur UpdateProductURL​ pour transformation, à l'aide du tableau suivant pour ​mapper la zone de base de données renvoyée depuis l'instruction SQL ci-dessus vers une zone d'index dans l'index Produit :​​
Nom de zone d'index Type de zone d'index ​​Description
url/​​seo raw L'URL de référencement de cette entrée de catalogue ; assignée à partir de la zone identifier.url, depuis la requête de recherche ci-dessus
Pour un exemple de code, voir les exemples de l'étape 7.

Exemples de l'étape 1

Le code suivant est un exemple des données d'entrée pour le processeur CreateCategoryURLDocumentFromDatabase :


{
  "SEOURL_ID" : 12050,
  "SEOURLKEYWORD_ID" : 12050,
  "URLKEYWORD" : "newsletters",
  "MOBILEURLKEYWORD" : null,
  "STOREENT_ID" : 10501,
  "STATUS" : 1,
  "LANGUAGE_ID" : -1,
  "SEOURLKWD_ID_NEW" : null,
  "URLKEYWORD_NEW" : null,
  "TOKENNAME" : "CategoryToken",
  "TOKENVALUE" : "10040",
  "LOCALENAME" : "en_US           ",
  "DISPLAYNAME" : "AuroraESite",
  "DESCRIPTION" : "Commerce Model Store entity",
  "CATGROUP_ID" : 10040,
  "NAME" : "Newsletters",
  "SHORTDESCRIPTION" : "Newsletters",
  "KEYWORD" : "Newsletters",
  "SITE_SEOPAGEDEF_ID" : 10001,
  "SITE_PAGENAME" : "CATEGORY_PAGE",
  "SITE_TITLE" : "<seo: CategoryName/> | <seo: StoreName/>",
  "SITE_META_DESC" : "<seo: CategoryShortDescription/>",
  "SITE_META_KEYWORD" : "<seo: CategoryKeyword/>",
  "SITE_IMAGE_ALT_DESC" : "Image for <seo: CategoryName/> from <seo: StoreName/>",
  "SITE_OBJECT_ID" : "0",
  "SITE_STOREENT_ID" : 10501,
  "IDENTIFIER" : "Newsletters",
  "OVERRIDE_SEOPAGEDEF_ID" : null,
  "OVERRIDE_PAGENAME" : null,
  "OVERRIDE_TITLE" : null,
  "OVERRIDE_META_DESC" : null,
  "OVERRIDE_META_KEYWORD" : null,
  "OVERRIDE_IMAGE_ALT_DESC" : null,
  "OVERRIDE_OBJECT_ID" : null,
  "OVERRIDE_STOREENT_ID" : null
}

Le processeur CreateCategoryURLDocumentFromDatabase transforme les données d'entrée avec le store id transmis à partir de la classe NiFi FlowFile en tant qu'attribut dans les exemples de données de sortie suivantes :


{ "update": { "_id": "1-12050", "_index": ".auth.1.url.202006160325", "retry_on_conflict": 5, "_source": false } }
{
  "doc": {
    "template": {
      "name": "CATEGORY_PAGE",
      "title": "<seo: CategoryName/> | <seo: StoreName/>",
      "meta": {
        "image": "Image for <seo: CategoryName/> from <seo: StoreName/>",
        "description": "<seo: CategoryShortDescription/>",
        "keyword": "<seo: CategoryKeyword/>"
      }
    },
    "identifier": {
      "specification": "url",
      "language": "en_US",
      "url": "newsletters"
    },
    "id": {
      "catalog": null,
      "language": "-1",
      "store": "1",
      "url": "12050"
    },
    "page": {
      "meta": {
        "image": "Image for Newsletters from AuroraESite",
        "description": "Newsletters",
        "keyword": "Newsletters"
      },
      "name": "CATEGORY_PAGE",
      "title": "Newsletters | AuroraESite",
      "type": "CategoryPage"
    },
    "__meta": {
      "created": "2020-08-04T19:36:35.884Z",
      "modified": "2020-08-04T19:36:35.910Z",
      "version": {
        "min": 0,
        "max": 0
      }
    },
    "status": 1,
    "token": {
      "identifier": "Newsletters",
      "name": "CategoryToken",
      "id": "10040"
    }
  },
  "doc_as_upsert": true
}

Exemples de l'étape 2

Le code suivant est un exemple des données d'entrée pour le processeur CreateProductURLDocumentFromDatabase :


{
  "SEOURL_ID" : 12711,
  "SEOURLKEYWORD_ID" : 19712,
  "URLKEYWORD" : "versatil-empire-waist-sundress-aurorawmdrs-022",
  "MOBILEURLKEYWORD" : null,
  "STOREENT_ID" : 10501,
  "STATUS" : 1,
  "LANGUAGE_ID" : -1,
  "SEOURLKWD_ID_NEW" : null,
  "URLKEYWORD_NEW" : null,
  "TOKENNAME" : "ProductToken",
  "TOKENVALUE" : "10061",
  "LOCALENAME" : "en_US           ",
  "DISPLAYNAME" : "AuroraESite",
  "DESCRIPTION" : "Commerce Model Store entity",
  "CATENTRY_ID" : 10061,
  "NAME" : "Versatil Empire Waist Sundress                                                                                                  ",
  "SHORTDESCRIPTION" : "Empire waist sundress with flower print and frilly sleeves",
  "KEYWORD" : null,
  "PARTNUMBER" : "AuroraWMDRS-022",
  "MFNAME" : "Versatil",
  "MFPARTNUMBER" : null,
  "CATENTTYPE_ID" : "ItemBean        ",
  "SITE_SEOPAGEDEF_ID" : 10002,
  "SITE_PAGENAME" : "PRODUCT_PAGE",
  "SITE_TITLE" : "<seo: ProductName/> | <seo: StoreName/>",
  "SITE_META_DESC" : "<seo: ProductShortDescription/>",
  "SITE_META_KEYWORD" : "<seo: ProductKeyword/> <seo: ProductManufacturerName/>",
  "SITE_IMAGE_ALT_DESC" : "Image for <seo: ProductName/> from <seo: StoreName/>",
  "SITE_OBJECT_ID" : "0",
  "SITE_STOREENT_ID" : 10501,
  "OVERRIDE_SEOPAGEDEF_ID" : null,
  "OVERRIDE_PAGENAME" : null,
  "OVERRIDE_TITLE" : null,
  "OVERRIDE_META_DESC" : null,
  "OVERRIDE_META_KEYWORD" : null,
  "OVERRIDE_IMAGE_ALT_DESC" : null,
  "OVERRIDE_OBJECT_ID" : null,
  "OVERRIDE_STOREENT_ID" : null
}

Le processeur CreateProductURLDocumentFromDatabase transforme les données d'entrée avec le store id transmis à partir de la classe NiFi FlowFile en tant qu'attribut dans les exemples de données de sortie suivantes :


{ "update": { "_id": "1-19712", "_index": ".auth.1.url.202006160325", "retry_on_conflict": 5, "_source": false } }
{
  "doc": {
    "template": {
      "name": "PRODUCT_PAGE",
      "type": "ItemPage",
      "title": "<seo: ProductName/> | <seo: StoreName/>",
      "meta": {
        "image": "Image for <seo: ProductName/> from <seo: StoreName/>",
        "description": "<seo: ProductShortDescription/>",
        "keyword": "<seo: ProductKeyword/> <seo: ProductManufacturerName/>"
      }
    },
    "identifier": {
      "specification": "url",
      "language": "en_US",
      "url": "versatil-empire-waist-sundress-aurorawmdrs-022"
    },
    "id": {
      "catalog": null,
      "language": "-1",
      "store": "1",
      "url": "19712"
    },
    "page": {
      "meta": {
        "image": "Image for Versatil Empire Waist Sundress from AuroraESite",
        "description": "Empire waist sundress with flower print and frilly sleeves",
        "keyword": " Versatil"
      },
      "name": "PRODUCT_PAGE",
      "type": "ItemPage",
      "title": "Versatil Empire Waist Sundress | AuroraESite"
    },
    "__meta": {
      "created": "2020-08-05T17:32:17.360Z",
      "modified": "2020-08-05T17:32:17.379Z",
      "version": {
        "min": 0,
        "max": 0
      }
    },
    "status": 1,
    "token": {
      "identifier": "AuroraWMDRS-022",
      "name": "ProductToken",
      "id": "10061"
    }
  },
  "doc_as_upsert": true

Exemples de l'étape 3

Le code suivant est un exemple des données d'entrée pour le processeur UpdatePageTypeFromDatabase.


{
    "SEOURLKEYWORD_ID": 12027
}

Le processeur UpdatePageTypeFromDatabase transforme les données d'entrée avec le store id transmis à partir de la classe NiFi FlowFile en tant qu'attribut dans les exemples de données de sortie suivantes :


{ "update": { "_id": "1-12027", "_index": ".auth.1.category.202006160325", "retry_on_conflict": 5, "_source": false } }
{
  "doc": {
    "page": {
      "type": "ProductListPage"
    },
    "__meta": {
      "created": "2020-08-05T18:10:22.115Z",
      "modified": "2020-08-05T18:10:22.133Z",
      "version": {
        "min": 0,
        "max": 0
      }
    }
  },
  "doc_as_upsert": true
}

Exemples de l'étape 6

Etape 4

Le code suivant est un exemple des données d'entrée pour le processeur UpdateCategoryURL :


{
  "_index" : ".auth.1.url.202007052103",
  "_type" : "_doc",
  "_id" : "1-12045",
  "_score" : 1.0004607,
  "fields" : {
    "token.id" : [ "10036" ],
    "identifier.url" : [ "lighting-home" ]
  }
}

Le processeur UpdateCategoryURL transforme les données d'entrée avec store id transmis à partir de la classe NiFi FlowFile en tant qu'attribut dans les exemples de données de sortie suivantes :


{ "update": { "_id": "1-null-null-10036", "_index": ".auth.1.category.202006160325", "retry_on_conflict": 5, "_source": false } }
{
  "doc": {
    "url": {
      "seo": "/lighting-home"
    },
    "__meta": {
      "created": "2020-08-05T18:43:04.969Z",
      "modified": "2020-08-05T18:43:04.984Z",
      "version": {
        "min": 0,
        "max": 0
      }
    }
  }
}

Exemples de l'étape 7

Le code suivant est un exemple des données d'entrée pour le processeur UpdateProductURL  :


{
  "_index" : ".auth.1.url.202007052126",
  "_type" : "_doc",
  "_id" : "1-19848",
  "_score" : 1.0004607,
  "fields" : {
    "token.id" : [ "10197" ],
    "identifier.url" : [ "versatil-strapless-sundress-aurorawmdrs-158" ]
  }
}

Le processeur UpdateProductURL transforme les données d'entrée avec store id, language id et catalog id transmis depuis la classe NiFi FlowFile en tant qu'attributs dans les données de sortie suivantes :


{ "update": { "_id": "1--1-10001-10197", "_index": ".auth.1.product.202006160325", "retry_on_conflict": 5, "_source": false } }
{
  "doc": {
    "url": {
      "seo": "/versatil-strapless-sundress-aurorawmdrs-158"
    },
    "__meta": {
      "created": "2020-08-05T19:07:48.668Z",
      "modified": "2020-08-05T19:07:48.683Z",
      "version": {
        "min": 0,
        "max": 0
      }
    }
  }
}