Pipeline d'index Produit 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 Produit.
Spécification des données de produit
| Nom de la zone de données | Type de données | Valeur de données |
|---|---|---|
| /uniqueId | long | L'identificateur interne de l'entrée de catalogue Commerce. |
| /identifier | chaîne | L'identificateur de l'entrée de catalogue externe. |
| /type | chaîne | Le type d'entrée de catalogue - ProductBean, ItemBean, PackageBean, BundleBean. |
| /manufacturerIdentifier | chaîne | Le nom du fabricant |
| /buyable | boolean | Indique si cette entrée de catalogue peut être achetée individuellement. Paramètre par défaut : false. |
| /availabilityDate | date | La date à laquelle cette entrée de catalogue devient disponible. |
| /prices/value | chaîne | Valeur de l'un des prix. |
| /prices/currency | chaîne | Devise de ce prix. |
| /prices/usage | chaîne | Prix catalogue ou prix de vente. |
| /items/uniqueId | long | L'identificateur interne de l'entrée de catalogue Commerce de ses enfants. |
| /items/identifier | chaîne | L'identificateur de l'entrée de catalogue externe de cette entrée enfant. |
| /items/sequence | float | La séquence de cette entrée enfant répertoriée dans son parent. |
| /components/uniqueId | long | L'identificateur interne de l'entrée de catalogue Commerce de ses sous-composants. |
| /components/identifier | chaîne | L'identificateur de l'entrée de catalogue externe de ce sous-composant. |
| /components/type | chaîne | Un des types d'entrées de catalogue : produit, article, paquet, groupement. |
| /components/quantity | float | Une quantité qui peut être associée à la relation. |
| /parentCategories/parentCategoryId | long | L'identificateur interne de la catégorie Commerce de la catégorie parent de cette entrée de catalogue. |
| /parentCategories/categoryIdentifier | chaîne | L'identificateur de catégorie externe de cette catégorie parent. |
| /parentCategories/catalogId | long | L'identificateur interne du catalogue Commerce. S'il n'est pas spécifié, le catalogue de magasin par défaut est utilisé. |
| /parentCategories/catalogIdentifier | chaîne | L'identificateur de catalogue externe pour cette catégorie parent. |
| /parentCategories/sequence | float | Le numéro de séquence utilisé pour déterminer l'ordre d'affichage dans cette catégorie parent. |
| /descriptions/languageId | entier | L'identificateur interne de la langue Commerce. S'il n'est pas spécifié, "paramètre régional" sera utilisé. Si "paramètre régional" n'est pas spécifié, la langue par défaut du magasin est utilisée. |
| /descriptions/locale | chaîne | L'identificateur des paramètres régionaux. |
| /descriptions/name | chaîne | Le nom dépendant de la langue de cette entrée de catalogue. |
| /descriptions/description | chaîne | La brève description de cette entrée de catalogue. |
| /descriptions/longDescription | chaîne | La description détaillée de cette entrée de catalogue. |
| /descriptions/keywords | chaîne | Une liste de mots clés utilisés pour la recherche. |
| /descriptions/thumbnail | chaîne | Le chemin de l'image miniature de cette entrée de catalogue. |
| /descriptions/fullImage | chaîne | Le chemin de l'image en taille réelle de cette entrée de catalogue. |
| /descriptions/published | boolean | Indique si cette entrée de catalogue doit être affichée pour la langue actuelle. Paramètre par défaut : false. |
| /descriptions/sequence | float | L'ordre de ce document dans la catégorie actuelle. |
| /attributes/uniqueId | long | L'identificateur interne de l'attribut Commerce. |
| /attributes/identifier | chaîne | L'identificateur externe de cet attribut. |
| /attributes/usage | chaîne | |
| /attributes/sequence | float | L'ordre d'affichage des attributs dans un groupe d'attributs ou dans la racine du dictionnaire d'attributs. |
| /attributes/descriptions/languageId | entier | Identificateur de langue interne de cette description d'attribut. |
| /attributes/descriptions/locale | chaîne | Le paramètre régional de cette description d'attribut. |
| /attributes/descriptions/name | chaîne | Le nom dépendant de la langue de cet attribut. |
| /attributes/descriptions/description | chaîne | La brève description de cet attribut qui dépend de la langue |
| /attributes/descriptions/thumbnail | chaîne | Le chemin de l'image miniature de cet attribut. |
| /attributes/values/uniqueId | chaîne | L'identificateur interne Commerce de cette valeur d'attribut. |
| /attributes/values/identifier | chaîne | L'identificateur externe de cette valeur d'attribut. |
| /attributes/values/unitId | chaîne | L'identificateur interne Commerce pour les unités dans lesquelles cette valeur d'attribut est mesurée. |
| /attributes/values/descriptions/languageId | entier | Identificateur de langue interne de cette description de valeur d'attribut. |
| /attributes/values/descriptions/locale | chaîne | Le paramètre régional de cette description de valeur d'attribut. |
| /attributes/values/descriptions/value | chaîne | La valeur de cet attribut. |
| /attributes/values/descriptions/thumbnail | chaîne | Le chemin de l'image miniature de cette valeur d'attribut. |
| /attributes/values/descriptions/sequence | float | Un nombre qui détermine l'ordre d'affichage d'une liste de valeurs d'attributs admises pour un attribut spécifique. |
Mappage de la zone d'index Produit à partir de la spécification de données
- Chargement du document du produit
- Déplacement vers le bas des propriétés de niveau produit vers ses articles
- Déplacement vers le haut des propriétés de niveau article vers son parent
- Génération d'une hiérarchie de catalogue et de chemins de navigation pour chaque catégorie de vente
- Etape 1 : Chargement du document du produit
- Cette étape décrit comment les données Produit peuvent être transformées et chargées dans l'index Produit à l'aide du script Groovy CreateProductDocument.
- Etape 2 : Déplacement vers le bas des propriétés de niveau produit vers ses articles
- Cette étape décrit comment les propriétés et les attributs d'une entrée de produit peuvent être envoyés vers tous ses articles enfant dans l'index Produit.
- Etape 3 : Déplacement vers le haut des propriétés de niveau article vers son parent
- Cette étape décrit comment les propriétés et les attributs d'une entrée de produit peuvent être envoyés vers son produit parent dans l'index Produit.
- Etape 4 : Génération d'une hiérarchie de catalogue pour la navigation
- Cette étape décrit comment les données de navigation peuvent être générées et chargées dans l'index Produit.
Mappage de la zone d'index Produit à partir de la base de données
- Création du document Produit
- Application du remplacement de niveau du site
- Association des abonnements
- Association de la relation du produit parent et enfant
- Application de la relation de jeu de produits pour l'autorisation du contrat
- Génération de l'association de marchandisage
- Association de pièces jointes de produit et d'images d'angle
- Génération d'une hiérarchie de catalogue pour la navigation
- Association des attributs
- Déplacement vers le haut des attributs de niveau article vers leurs parents
- Déplacement vers le bas des propriétés de niveau produit vers ses articles
- Association d'attributs descriptifs enfant
- Association des pièces jointes enfant
Etape 1 : Création du document du produit
Le flux de données ci-dessus décrit comment les données Produit peuvent être transformées et chargées dans l'index Produit.
SELECT C.CATENTRY_ID, C.MEMBER_ID, C.CATENTTYPE_ID, C.PARTNUMBER, C.MARKFORDELETE, C.BUYABLE, C.STATE,
COALESCE(D.LANGUAGE_ID, L.LANGUAGE_ID) LANGUAGE_ID,
COALESCE(C.MFPARTNUMBER, VP.MFPARTNUMBER) MFPARTNUMBER,
COALESCE(C.MFNAME,VP.MFNAME) MFNAME,
COALESCE(C.STARTDATE,VP.STARTDATE) STARTDATE,
COALESCE(C.ENDDATE,VP.ENDDATE) ENDDATE,
COALESCE(D.NAME, PD.NAME) NAME,
COALESCE(D.SHORTDESCRIPTION, PD.SHORTDESCRIPTION) SHORTDESCRIPTION,
COALESCE(D.KEYWORD, PD.KEYWORD) KEYWORD,
D.THUMBNAIL, D.FULLIMAGE, D.PUBLISHED,
R.CATALOG_ID, L.LOCALENAME, S.STOREENT_ID, PD.THUMBNAIL PARENT_THUMBNAIL, PD.FULLIMAGE PARENT_FULLIMAGE
FROM CATGPENREL R, LANGUAGE L, STORECAT S, CATENTRY C
${TI_DELTA_JOIN_QUERY}
LEFT OUTER JOIN CATENTDESC D ON (D.CATENTRY_ID=C.CATENTRY_ID AND D.LANGUAGE_ID = ${param.langId})
LEFT OUTER JOIN CATENTREL PV ON (C.CATENTRY_ID = PV.CATENTRY_ID_CHILD AND PV.CATRELTYPE_ID IN ('PRODUCT_VARIANT', 'PRODUCT_ITEM')
AND PV.CATENTRY_ID_CHILD <> PV.CATENTRY_ID_PARENT)
LEFT OUTER JOIN CATENTRY VP ON (VP.CATENTRY_ID = PV.CATENTRY_ID_PARENT)
LEFT OUTER JOIN CATENTDESC PD ON (PV.CATENTRY_ID_PARENT=PD.CATENTRY_ID AND PD.LANGUAGE_ID = ${param.langId})
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 S.CATALOG_ID = R.CATALOG_ID AND L.LANGUAGE_ID = ${param.langId} ${extCatentryAndSQL}
ORDER BY CATENTRY_ID
OFFSET ${param.offset} ROWS FETCH NEXT ${param.pageSize} ROWS ONLY
| Nom de zone d'index | Type de zone d'index | Description |
|---|---|---|
| Identificateur du document. | ||
| id/store | id_string | ID interne du magasin propriétaire ; mappé à la table STORECENT |
| id/langue | id_string | L'identificateur de la langue ; mappé à CATENTDESC.LANGUAGE_ID |
| id/catalog | id_string | Catalogue parent de Catentry ; mappé à la table CATGPENREL |
| id/catentry | id_string | Attributs de base de Catentry ; mappé à CATENTRY.CATENTRY_ID |
| id/member | id_string | Le numéro de référence interne qui identifie le propriétaire de l'entrée de catalogue ; mappé à CATENTRY.MEMBER_ID |
| identifier/specification | id_string | Défini sur "produit" |
| identificateur/magasin | id_string | Une chaîne qui identifie de façon unique le magasin propriétaire ; mappé à la table STOREENT |
| identifier/language | id_string | Le paramètre régional linguistique de cette entrée de catalogue ; mappé depuis CATENTDESC.LANGUAGE_ID |
| identifier/catalog | id_string | L'identificateur externe du catalogue de vente ; mappé à CATGPENREL |
| identifier/sku/raw | raw | La SKU de l'entrée de catalogue ; mappé à CATENTRY.PARTNUMBER |
| identifier/sku/normalized | normalilsé | Identique à ci-dessus |
| identifier/pn/raw | raw | Le numéro de référence identifiant le numéro de pièce de l'entrée de catalogue ; mappé à CATENTRY.PARTNUMBER |
| identifier/pn/normalized | normalilsé | Identique à ci-dessus |
| identifier/mpn/raw | raw | Le numéro de référence identifiant le numéro de pièce du fabricant de l'entrée de catalogue ; mappé à CATENTRY.MFPARTNUMBER |
| identifier/mpn/normalized | normalilsé | Identique à ci-dessus |
| Données sensibles à la langue | ||
| name/raw | raw | Le nom dépendant de la langue de cette entrée de catalogue ; mappé à CATENTDESC.NAME |
| name/normalized | normalized | Identique à ci-dessus |
| name/text | texte | Identique à ci-dessus |
| keyword/text | texte | Un mot clé utilisé pour la recherche ; mappé à CATENTDESC.KEYWORD |
| url/thumbnail | raw | Le chemin de l'image miniature de cette entrée de catalogue ; mappé à CATENTDESC.THUMBNAIL |
| url/image | raw | Le chemin de l'image complet de cette entrée de catalogue ; mappé à CATENTDESC.FULLIMAGE |
| url/seo | raw | |
| Propriétés | ||
| manufacturer/raw | raw | Nom du fabricant ou de l'entreprise de l'entrée de catalogue ; mappé à CATENTRY.MFNAME |
| manufacturer/normalized | normalized | Identique à ci-dessus |
| manufacturer/text | texte | Identique à ci-dessus |
| type | id_string | produit, article, package, groupement ; mappé à CATENTRY.CATENTTYPE_ID |
| proposé à l'achat | boolean | Indique si cette entrée de catalogue peut être achetée individuellement ; mappé à CATENTRY.BUYABLE |
| displayable | boolean | Indique si cette entrée de catalogue doit être affichée pour la langue ; mappé à CATENTDESC.PUBLISHED |
| début | date | La date d'introduction de cette entrée de catalogue ; mappé à CATENTRY.STARTDATE |
| end | date | La date de retrait de cette entrée de catalogue ; mappé à CATENTRY.ENDDATE |
| état | boolean | L'état d'une catentry ; mappé à CATENTRY.STATE |
| Langage naturel | ||
| natural/nouns/raw | raw | Cette zone contient des noms extraits de zones indexées dans ce document actuel à utiliser avec la recherche de langage naturel |
| natural/nouns/normalized | normalized | Identique à ci-dessus |
| natural/adjectives/raw | raw | Cette zone contient toutes les valeurs non numériques des attributs consultables du document en cours |
| natural/adjectives/normalized | normalized | Identique à ci-dessus |
| natural/names/raw | raw | Cette zone contient des noms extraits du document actuel à l'aide de l'extracteur d'entité de nom Stanford |
| natural/names/normalized | normalized | Identique à ci-dessus |
| natural/categories/raw | raw | Cette zone contient une liste de noms de catégorie normalisés copiés à partir de la zone catégorie/nom |
| natural/categories/normalized | normalized | Identique à ci-dessus |
| natural/locations/raw | raw | Cette zone contient n'importe quel nom spécifique de l'emplacement extrait par le marqueur de catégories grammaticales Stanford |
| natural/locations/normalized | normalized | Identique à ci-dessus |
| natural/intents/raw | raw | Cette zone contient des intentions potentielles qui peuvent être utilisées pour établir une correspondance avec l'intention du client au moment de l'interrogation |
| natural/intents/normalized | normalized | Identique à ci-dessus |
| Données de navigation | ||
| relationship/name | mot clé | Une relation à sens unique. Valeurs prises en charge : produit, article, paquet, groupement, variante |
| relationship/product/id | id_string | Produit parent de catentry ; mappé au tableau CATENTREL |
| relationship/product/sequence | float | Séquence d'affichage de Catentry ; mappé à la table : CATENTREL |
| relationship/variant/id | id_string | Produit parent de la variante ; mappé au tableau : CATENTREL |
| relationship/variant/sequence | float | Séquence d'affichage de la variante ; mappé au tableau : CATENTREL |
| relationship/item/id | id_string | Catentry enfant de catentry ; mappé au tableau : CATENTREL |
| relationship/item/sequence | float | Séquence d'affichage de Catentry ; mappé à la table : CATENTREL |
| Auto-achèvement et correction orthographique | ||
| default/correction | texte | Utilisez l'outil de suggestion de termes sur cette zone au moment de la requête pour fournir la fonction de correction orthographique basée sur le terme. Disposer d'une zone dédiée distincte pour la suggestion de termes permet la suggestion de termes différents. La réutilisation de la zone de recherche par défaut ne peut pas fournir cette précision de contrôle. Par défaut, seuls le nom, la description et le mot clé sont copiés dans cette zone. |
| default/completion | Achèvement | En alimentant une liste de tous les achèvements possibles, et l'outil de suggestion d'achèvement les génère dans un transducteur à l'état fini, la structure de données optimisée ressemble à un grand graphique. Pour rechercher des suggestions, Elasticsearch commence au début du graphique et se déplace caractère par caractère le long du chemin de correspondance. Lorsqu'il n'a plus d'entrées de l'utilisateur, il examine toutes les fins possibles du cheminement actuel pour produire une liste de suggestions. Cette structure de données vit dans la mémoire et rend les recherches de préfixes extrêmement rapides, beaucoup plus rapides que ne pourrait l'être n'importe quelle requête basée sur un terme. C'est exactement ce qu'il faut pour le remplissage automatique des noms et des marques, dont les mots sont généralement organisés dans un ordre commun. Lorsque l'ordre des mots est moins prévisible, les n-gram de bord (search_as_you_type) peuvent être une meilleure solution que l'outil de suggestion d'achèvement. Par défaut, seuls le nom, la description et le mot clé sont copiés dans cette zone. |
| default/suggestion | search_as_you_type | Le type de zone search_as_you_type est une zone de type texte optimisée pour fournir des requêtes qui servent un cas d'utilisation d'achèvement au fur et à mesure de la saisie. Il crée une série de sous-zones (n-gram) qui sont analysées pour indexer des termes qui peuvent être efficacement mis en correspondance par une requête qui correspond partiellement à la totalité de la valeur du texte indexé. L'achèvement du préfixe (c'est-à-dire les termes correspondants qui commencent au début de la saisie) et l'achèvement de l'infixe (c'est-à-dire les termes correspondants à n'importe quelle position dans l'entrée) sont pris en charge. Par défaut, seuls le nom, la description et le mot clé sont copiés dans cette zone. |
| Valeur par défaut | ||
| default/search/text | texte | Une zone pratique pour effectuer la recherche de texte avec l'analyseur standard. Les données sont préconfigurées pour être copiées dans cette zone : nom, description, mot clé, nom de catégorie et certaines valeurs d'attribut consultables. Remarque: le fabricant et le SKU ne peuvent pas être copiés dans car le nom de la marque et le numéro de pièce seront indiqués sous forme de jeton et généreront de faux accès inutiles. |
| default/search/normalized | normalized | Identique à la zone de recherche par défaut ci-dessus, sauf que le type de données est normalisé dans le cas présent. Les données préconfigurées sont également les mêmes que search.text, en plus de celles du fabricant et de la SKU |
Etape 2 : Application du remplacement de niveau du site
SELECT C.CATENTRY_ID, O.LANGUAGE_ID, O.NAME, O.SHORTDESCRIPTION, O.KEYWORD, O.FULLIMAGE, O.THUMBNAIL, L.LOCALENAME
FROM CATENTRY C ${TI_DELTA_JOIN_QUERY}, CATENTDESCOVR O, LANGUAGE L
WHERE C.CATENTRY_ID = O.CATENTRY_ID AND O.LANGUAGE_ID = ${param.langId} AND L.LANGUAGE_ID = O.LANGUAGE_ID AND C.MARKFORDELETE = 0
AND C.CATENTRY_ID IN
(SELECT R.CATENTRY_ID FROM CATGPENREL R
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}))) ${extCatentryAndSQL} | Nom de zone d'index | Type de zone d'index | Description |
|---|---|---|
| Données sensibles à la langue | ||
| name/override/raw | raw | Le remplacement de niveau magasin pour le nom de cette entrée de catalogue ; mappé à CATENTDESCOVR.NAME |
| name/override/normalized | normalized | Identique à ci-dessus |
| name/override/text | texte | Identique à ci-dessus |
| keyword/override/text | raw | Le remplacement de niveau magasin pour le mot clé de cette entrée de catalogue ; mappé à CATENTDESCOVR.KEYWORD |
| description/override/raw | raw | Le remplacement de niveau magasin pour la brève description de cette entrée de catalogue ; mappé à CATENTDESCOVR.SHORTDESCRIPTION |
| description/override/text | texte | Identique à ci-dessus |
| url/override/thumbnail | raw | Le remplacement du niveau magasin par le chemin de l'image de miniature de cette entrée de catalogue ; mappé à CATENTDESCOVR.THUMBNAIL |
| url/override/image | raw | Le remplacement du niveau magasin par le chemin de l'image en taille réelle de cette entrée de catalogue; mappé à CATENTDESCOVR.FULLIMAGE |
Etape 3 : Association des abonnements
SELECT C.CATENTRY_ID, S.DISALLOW_REC_ORDER, T.SUBSCPTYPE_ID
FROM CATENTRY C ${TI_DELTA_JOIN_QUERY}, CATENTSUBS S, SUBSCPTYPE T
WHERE S.SUBSCPTYPE_ID = T.SUBSCPTYPE_ID AND C.CATENTRY_ID = S.CATENTRY_ID AND C.MARKFORDELETE = 0
AND C.CATENTRY_ID IN
(SELECT R.CATENTRY_ID FROM CATGPENREL R
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}))) ${extCatentryAndSQL}
| Nom de zone d'index | Type de zone d'index | Description |
|---|---|---|
| subscription/type | raw | Le type d'abonnement auquel l'entrée de catalogue peut être abonnée. |
| subscription/recurring | boolean | Indique s'il est impossible d'acheter cette entrée de catalogue par le biais d'une commande récurrente. La valeur par défaut est true. |
Etape 4 : Association de la relation du produit parent et enfant
SELECT L.CATENTRY_ID_PARENT,
LISTAGG(L.CATENTRY_ID_CHILD, ', ') WITHIN GROUP (ORDER BY L.CATENTRY_ID_CHILD) CATENTRY_ID_CHILD,
LISTAGG(TO_CHAR(L.SEQUENCE), ', ') WITHIN GROUP (ORDER BY L.CATENTRY_ID_CHILD) SEQUENCE,
LISTAGG(L.CATRELTYPE_ID, '###') WITHIN GROUP (ORDER BY L.CATENTRY_ID_CHILD) CATRELTYPE_ID,
LISTAGG(R.CATALOG_ID, '###') WITHIN GROUP (ORDER BY L.CATENTRY_ID_CHILD) CATALOG_ID,
NULL AS COMPONENT_ID,
NULL AS QUANTITY
FROM CATENTREL L, CATGPENREL R, CATENTRY C
${TI_DELTA_JOIN_QUERY}
WHERE 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.CATENTRY_ID = L.CATENTRY_ID_PARENT
AND C.CATENTTYPE_ID NOT IN ('ItemBean') ${extCatentryAndSQL}
AND L.CATRELTYPE_ID NOT IN ('BUNDLE_COMPONENT', 'PACKAGE_COMPONENT')
AND L.CATENTRY_ID_CHILD IN (SELECT CATENTRY_ID FROM CATENTRY CE Where CE.CATENTRY_ID = L.CATENTRY_ID_CHILD AND CE.MARKFORDELETE = 0)
GROUP BY L.CATENTRY_ID_PARENT
UNION
SELECT CATENTRY_ID_PARENT,
LISTAGG(KITCOMP.CATENTRY_ID_CHILD,', ') WITHIN GROUP (ORDER BY KITCOMP.CATENTRY_ID_CHILD) CATENTRY_ID_CHILD,
LISTAGG(TO_CHAR(KITCOMP.SEQUENCE),', ') WITHIN GROUP (ORDER BY KITCOMP.CATENTRY_ID_CHILD) SEQUENCE,
LISTAGG(KITCOMP.CATRELTYPE_ID, '###') WITHIN GROUP (ORDER BY KITCOMP.CATENTRY_ID_CHILD) CATRELTYPE_ID,
LISTAGG(KITCOMP.CATALOG_ID, '###') WITHIN GROUP (ORDER BY KITCOMP.CATENTRY_ID_CHILD) CATALOG_ID,
LISTAGG(KITCOMP.COMPONENT_ID, ', ') WITHIN GROUP (ORDER BY KITCOMP.CATENTRY_ID_CHILD) COMPONENT_ID,
LISTAGG(TO_CHAR(KITCOMP.QUANTITY), ', ') WITHIN GROUP (ORDER BY KITCOMP.CATENTRY_ID_CHILD) QUANTITY
FROM (SELECT L.CATENTRY_ID_PARENT, L.CATENTRY_ID_CHILD, L.SEQUENCE, R.CATALOG_ID, CATENTRY_ID_CHILD COMPONENT_ID, QUANTITY, L.CATRELTYPE_ID
FROM CATENTREL L, CATGPENREL R, CATENTRY C
${TI_DELTA_JOIN_QUERY}
WHERE 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.CATENTRY_ID = L.CATENTRY_ID_PARENT
AND L.CATENTRY_ID_CHILD IN (SELECT CATENTRY_ID FROM CATENTRY CE Where CE.CATENTRY_ID = L.CATENTRY_ID_CHILD AND CE.MARKFORDELETE = 0)
AND CATRELTYPE_ID in ('BUNDLE_COMPONENT','PACKAGE_COMPONENT') ${extCatentryAndSQL}) KITCOMP
GROUP BY KITCOMP.CATENTRY_ID_PARENT
OFFSET ${param.offset} ROWS FETCH NEXT ${param.pageSize} ROWS ONLY
| Nom de zone d'index | Type de zone d'index | Description |
|---|---|---|
| Données de navigation | ||
| relationship/item/id | id_string | Catentry enfant de catentry ; mappé à la table CATENTREL |
| relationship/item/sequence | float | Séquence d'affichage de Catentry ; mappé à la table : CATENTREL |
| relationship/component/id | id_string | Une liste des identificateurs des composants des groupements et des packages ; mappé à la table CATENTREL |
| relationship/component/quantity | float | La quantité de chacun des composants ci-dessus |
Etape 5 : Application de la relation de jeu de produits pour l'autorisation du contrat
SELECT C.CATENTRY_ID, R.PRODUCTSET_ID
FROM CATENTRY C, PRSETCEREL R
WHERE C.CATENTRY_ID = R.CATENTRY_ID AND C.MARKFORDELETE = 0
AND C.CATENTRY_ID IN
(SELECT G.CATENTRY_ID FROM CATGPENREL G
WHERE G.CATALOG_ID = ${param.catalogId} AND G.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})))
ORDER BY R.CATENTRY_ID
| Nom de zone d'index | Type de zone d'index | Description |
|---|---|---|
| Données de navigation | ||
| relationship/set | id_string | Une liste d'ensembles de produits auxquels cette catentry a participé ; mappé à PRSETCEREL.PRODUCTSET_ID |
Etape 6 : Génération d'associations de marchandisage
SELECT M.CATENTRY_ID_FROM,
LISTAGG(M.MASSOCTYPE_ID, '###') WITHIN GROUP (ORDER BY M.RANK) TYPE,
LISTAGG(TO_CHAR(COALESCE(M.RANK, 0)), ', ') WITHIN GROUP (ORDER BY M.RANK) RANK,
LISTAGG(TO_CHAR(COALESCE(M.QUANTITY, 0)), ', ') WITHIN GROUP (ORDER BY M.RANK) QUANTITY,
LISTAGG(M.CATENTRY_ID_TO, ', ') WITHIN GROUP (ORDER BY M.RANK) CATENTRY_ID_TO
FROM MASSOCCECE M ${TI_DELTA_JOIN_QUERY_MASSOCCECE}
WHERE M.STORE_ID IN (SELECT RELATEDSTORE_ID FROM STOREREL WHERE STATE = 1 AND STRELTYP_ID = -4 AND STORE_ID = ${param.storeId}) ${extCatentryIdFromAndSQL}
GROUP BY M.CATENTRY_ID_FROM
| Nom de zone d'index | Type de zone d'index | Description |
|---|---|---|
| Associations de marchandisage | ||
| associations/id | id_string | L'ID d'entrée de catalogue de la cible de cette association de marchandisage ; mappé à MASSOCCECE.CATENTRY_ID_FROM |
| associations/type | id_string | L'identificateur du type d'association de marchandisage ; mappé à MASSOCCECE.MASSOCTYPE_ID |
| associations/rank | float | Le numéro de séquence utilisé pour l'ordre d'affichage ; mappé à MASSOCCECE.RANK |
| associations/quantity | float | La quantité liée à cette association ; mappé à MASSOCCECE.QUANTITY |
Etape 7 : Association de pièces jointes de produit et d'images d'angle
SELECT CE.CATENTRY_ID,
LISTAGG(ATCHAST.ATCHAST_ID, ', ') WITHIN GROUP (ORDER BY ATCHAST.ATCHAST_ID) ATCHAST_ID,
LISTAGG(ATCHTGT.IDENTIFIER, '###') WITHIN GROUP (ORDER BY ATCHAST.ATCHAST_ID) IDENTIFIER,
LISTAGG(COALESCE(NULLIF(ATCHRELDSC.NAME,''), ' '), '###') WITHIN GROUP (ORDER BY ATCHAST.ATCHAST_ID) NAME,
LISTAGG(COALESCE(NULLIF(ATCHRELDSC.SHORTDESCRIPTION,''), ' '), '###') WITHIN GROUP (ORDER BY ATCHAST.ATCHAST_ID) SHORTDESCRIPTION,
LISTAGG(COALESCE(ATCHAST.ATCHASTPATH, ' '), '###') WITHIN GROUP (ORDER BY ATCHAST.ATCHAST_ID) ATCHASTPATH,
LISTAGG(COALESCE(NULLIF(ATCHAST.DIRECTORYPATH,''), ' '), '###') WITHIN GROUP (ORDER BY ATCHAST.ATCHAST_ID) DIRECTORYPATH,
LISTAGG(COALESCE(NULLIF(ATCHAST.MIMETYPE,''), ' '), '###') WITHIN GROUP (ORDER BY ATCHAST.ATCHAST_ID) MIMETYPE,
LISTAGG(ATCHASTLG.LANGUAGE_ID, ', ') WITHIN GROUP (ORDER BY ATCHAST.ATCHAST_ID) LANGUAGE_ID,
LISTAGG(COALESCE(ATCHRLUS.IMAGE, ' '), '###') WITHIN GROUP (ORDER BY ATCHAST.ATCHAST_ID) IMAGE,
LISTAGG(COALESCE(ATCHRLUS.IDENTIFIER, ' '), '###') WITHIN GROUP (ORDER BY ATCHAST.ATCHAST_ID) RULENAME,
LISTAGG(TO_CHAR(ATCHREL.SEQUENCE), ', ') WITHIN GROUP (ORDER BY ATCHAST.ATCHAST_ID) SEQUENCE
FROM CATENTRY CE
${TI_DELTA_JOIN_QUERY_ATTCH}
JOIN ATCHREL ON (ATCHREL.BIGINTOBJECT_ID = CE.CATENTRY_ID)
JOIN ATCHOBJTYP ON (ATCHREL.ATCHOBJTYP_ID = ATCHOBJTYP.ATCHOBJTYP_ID AND ATCHOBJTYP.IDENTIFIER = 'CATENTRY')
LEFT JOIN ATCHTGT ON (ATCHREL.ATCHTGT_ID = ATCHTGT.ATCHTGT_ID )
JOIN ATCHAST ON (ATCHAST.ATCHTGT_ID = ATCHTGT.ATCHTGT_ID)
LEFT JOIN ATCHASTLG ON (ATCHASTLG.ATCHAST_ID = ATCHAST.ATCHAST_ID)
LEFT JOIN ATCHRELDSC ON (ATCHRELDSC.ATCHREL_ID = ATCHREL.ATCHREL_ID AND ATCHRELDSC.LANGUAGE_ID= ${param.langId})
JOIN ATCHRLUS ON (ATCHREL.ATCHRLUS_ID = ATCHRLUS.ATCHRLUS_ID)
WHERE (ATCHASTLG.ATCHASTLG_ID IS NULL OR ATCHASTLG.LANGUAGE_ID=${param.langId})
AND CE.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 <> 'ItemBean') ${extCatentryAndSQL1a}
GROUP BY CE.CATENTRY_ID
| Pièces jointes | ||
| attachments/id | id_string | L'identificateur interne de l'actif de pièces jointes |
| attachments/identifier | id_string | L'identificateur du type d'objet de pièce jointe |
| attachments/name/raw | raw | Le nom dépendant de la langue pour la relation de pièce jointe. |
| attachments/description/raw | raw | La description abrégée de la relation de pièce jointe. |
| attachments/url | raw | Le chemin d'accès de l'actif de pièces jointes est le chemin d'accès relatif de l'actif des pièces jointes qui inclut le chemin d'accès du répertoire et le nom de fichier de l'actif de pièces jointes |
| attachments/mime | normalized | Le codage de type MIME de la ressource de pièce jointe |
| attachments/sequence | float | Le numéro de séquence pour l'affichage de la relation de pièce jointe |
| attachments/rule | raw | L'identificateur d'utilisation de la relation de pièce jointe qui décrit l'utilisation de cette relation de pièce jointe. |
| Images | ||
| images/sequence | float | Numéro de séquence pour l'affichage de la pièce jointe d'image d'angle; mappée à ATCHREL.SEQUENCE si ATCHRLUS.IDENTIFIER égal à ANGLEIMAGES_FULLIMAGE ou ANGLEIMAGES_THUMBNAIL |
| images/image | id_string | Le chemin de l'actif de pièces jointes d'image d'angle est le chemin d'accès relatif qui inclut le chemin d'accès du répertoire et le nom de fichier de la pièce jointe d'image d'angle ; mappée à ATCHAST.ATCHASTPATH si ATCHRLUS.IDENTIFIER est égal à ANGLEIMAGES_FULLIMAGE |
| images/thumbnail | id_string | Le chemin de l'actif de pièces jointes d'image d'angle est le chemin d'accès relatif qui inclut le chemin d'accès du répertoire et le nom de fichier de la pièce jointe d'image d'angle ; mappée à ATCHAST.ATCHASTPATH si ATCHRLUS.IDENTIFIER est égal à ANGLEIMAGES_THUMBNAIL |
| images/name | id_string | Nom dépendant de la langue pour la pièce jointe d'image d'angle ; mappé à ATCHRELDSC.NAME si ATCHRLUS. IDENTIFIER est égal à ANGLEIMAGES_FULLIMAGE ou ANGLEIMAGES_THUMBNAIL |
| Valeur par défaut | ||
| default/attachment/text | texte | Identique à la zone de recherche par défaut pour la recherche de texte, sauf que cette zone n'est que la portée du nom et de la description des pièces jointes. |
Etape 8 : Génération d'une hiérarchie de catalogue pour la navigation
SELECT C.CATENTRY_ID,
LISTAGG(R.CATGROUP_ID, '###') WITHIN GROUP (ORDER BY R.CATGROUP_ID) CATGROUP_ID,
LISTAGG(TO_CHAR(R.SEQUENCE), '###') WITHIN GROUP (ORDER BY R.CATGROUP_ID) SEQUENCE
FROM CATGPENREL R, STORECAT S, CATENTRY C
${TI_DELTA_JOIN_QUERY}
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 S.CATALOG_ID = R.CATALOG_ID ${extCatentryAndSQL}
GROUP BY C.CATENTRY_ID ORDER BY C.CATENTRY_ID
OFFSET ${param.offset} ROWS FETCH NEXT ${param.pageSize} ROWS ONLY
- Il commence par exécuter la requête Elasticsearch suivante au niveau de l'index Catégorie :
{ "stored_fields": [ "id*", "category.*", "name.*", "path" ], "size": ${es.pageSize}, "query": { "bool": { "must_not": { "exists": { "field": "category.parent" } }, "filter": [ { "term": { "id.store": "${param.storeId}" } }, { "term": { "id.catalog": "${param.catalogId}" } }, { "term": { "id.language": "${param.langId}" } } ] } } } - Le jeu de résultats initial à partir de la requête de recherche ci-dessus renvoie toutes les catégories de niveau supérieur du catalogue donné. Utilisation de toutes les catégories enfant de cet ensemble de catégories de niveau supérieur pour générer une autre requête Elasticsearch afin de rechercher les catégories enfant de niveau suivant du catalogue de vente actuel :
{ "stored_fields": [ "id*", "category.*", "name.*", ], "size": 10000, "query": { "bool": { "must": { "match_all": {} }, "filter": [ { "terms": { "category.parent": [ "10020", ... ] } }, { "term": { "id.store": "1" } }, { "term": { "id.catalog": "10502" } }, { "term": { "id.language": "-1" } } ] } } }
- La requête ci-dessus sera ensuite renvoyée au flux de données dans NiFi pour réexécution.
| Nom de zone d'index | Type de zone d'index | Description |
|---|---|---|
| Données de navigation | ||
| identifier | id_string | catalogId + ID de chemin de catégorie séparés par un trait d'union menant à la catégorie racine |
| category/<identifier>/name | normalized | Le nom de cette catégorie de vente parent |
| category/<identifier>/parent | id_string | La catégorie parent de ce document actuel utilisé pour la séquence |
| category/<identifier>/sequence | float | La séquence de niveau catégorie de feuilles (peu profonde) définie dans CMC |
| category/<identifier>/path/id | id_string | Une liste des ID internes de catégorie menant à la catégorie racine |
| category/<identifier>/path/name | raw | Liste similaire des catégories menant à la racine, sauf que cette zone stocke le nom de la catégorie à la place |
| path/<catalogId>/tree | raw | Zone segmentée pour le chemin de navigation complet vers le nœud de catégorie actuel dans le catalogue de vente. Par exemple, lorsqu'une catégorie "robe" (id:10001) avec le chemin d'accès "/1/3/10001" est indexée pour le catalogue de vente 10502, cette zone stocke la forme originale du chemin d'accès |
Etape 9 : Association des attributs
SELECT CEA.CATENTRY_ID,
LISTAGG(CEA.USAGE, ', ') WITHIN GROUP (ORDER BY CEA.ATTRVAL_ID) USAGE,
LISTAGG(AD.LANGUAGE_ID, ', ') WITHIN GROUP (ORDER BY CEA.ATTRVAL_ID) LANGUAGE_ID,
LISTAGG(A.STOREENT_ID, ', ') WITHIN GROUP (ORDER BY CEA.ATTRVAL_ID) STOREENT_ID,
LISTAGG(A.ATTRTYPE_ID, '###') WITHIN GROUP (ORDER BY CEA.ATTRVAL_ID) ATTRTYPE_ID,
LISTAGG(CEA.ATTR_ID, ', ') WITHIN GROUP (ORDER BY CEA.ATTRVAL_ID) ATTR_ID,
LISTAGG(TO_CHAR(COALESCE(CEA.SEQUENCE, 0)), ', ') WITHIN GROUP (ORDER BY CEA.ATTRVAL_ID) ATTR_SEQUENCE,
LISTAGG(A.IDENTIFIER, '###') WITHIN GROUP (ORDER BY CEA.ATTRVAL_ID) ATTR_IDENTIFIER,
LISTAGG(COALESCE(A.DISPLAYABLE, 0), ', ') WITHIN GROUP (ORDER BY CEA.ATTRVAL_ID) DISPLAYABLE,
LISTAGG(COALESCE(A.SEARCHABLE, 0), ', ') WITHIN GROUP (ORDER BY CEA.ATTRVAL_ID) SEARCHABLE,
LISTAGG(COALESCE(A.COMPARABLE, 0), ', ') WITHIN GROUP (ORDER BY CEA.ATTRVAL_ID) COMPARABLE,
LISTAGG(COALESCE(A.FACETABLE, 0), ', ') WITHIN GROUP (ORDER BY CEA.ATTRVAL_ID) FACETABLE,
LISTAGG(COALESCE(A.MERCHANDISABLE, 0), ', ') WITHIN GROUP (ORDER BY CEA.ATTRVAL_ID) MERCHANDISABLE,
LISTAGG(COALESCE(A.SWATCHABLE, 0), ', ') WITHIN GROUP (ORDER BY CEA.ATTRVAL_ID) SWATCHABLE,
LISTAGG(COALESCE(A.STOREDISPLAY, 0), ', ') WITHIN GROUP (ORDER BY CEA.ATTRVAL_ID) STOREDISPLAY,
LISTAGG(COALESCE(AD.NAME, ADF.NAME), '###') WITHIN GROUP (ORDER BY CEA.ATTRVAL_ID) ATTR_NAME,
LISTAGG(COALESCE(COALESCE(AD.GROUPNAME, ADF.GROUPNAME), ' '), '###') WITHIN GROUP (ORDER BY CEA.ATTRVAL_ID) GROUPNAME,
LISTAGG(V.IDENTIFIER, '###') WITHIN GROUP (ORDER BY CEA.ATTRVAL_ID) ATTRVAL_IDENTIFIER,
LISTAGG(COALESCE(COALESCE(VD.STRINGVALUE, VDF.STRINGVALUE), ' ' ), '###') WITHIN GROUP (ORDER BY CEA.ATTRVAL_ID) STRINGVALUE,
LISTAGG(COALESCE(TO_CHAR(COALESCE(VD.INTEGERVALUE, VDF.INTEGERVALUE)), ' '), '###') WITHIN GROUP (ORDER BY CEA.ATTRVAL_ID) INTEGERVALUE,
LISTAGG(COALESCE(TO_CHAR(COALESCE(VD.FLOATVALUE, VDF.FLOATVALUE)), ' '), '###') WITHIN GROUP (ORDER BY CEA.ATTRVAL_ID) FLOATVALUE,
LISTAGG(COALESCE(TO_CHAR(COALESCE(VD.SEQUENCE, VDF.SEQUENCE)), '0'), ', ') WITHIN GROUP (ORDER BY CEA.ATTRVAL_ID) ATTRVAL_SEQUENCE,
LISTAGG(COALESCE(COALESCE(VD.QTYUNIT_ID, VDF.QTYUNIT_ID), ' '), '###') WITHIN GROUP (ORDER BY CEA.ATTRVAL_ID) QTYUNIT_ID,
LISTAGG(COALESCE(NULLIF(COALESCE(VD.IMAGE1, VDF.IMAGE1), ''), ' '), '###') WITHIN GROUP (ORDER BY CEA.ATTRVAL_ID) IMAGE1,
LISTAGG(COALESCE(NULLIF(COALESCE(VD.IMAGE2, VDF.IMAGE2), ''), ' '), '###') WITHIN GROUP (ORDER BY CEA.ATTRVAL_ID) IMAGE2,
LISTAGG(CEA.ATTRVAL_ID, ', ') WITHIN GROUP (ORDER BY CEA.ATTRVAL_ID) ATTRVAL_ID,
LISTAGG(COALESCE(COALESCE(QD.DESCRIPTION, QDF.DESCRIPTION), ' '), '###') WITHIN GROUP (ORDER BY CEA.ATTRVAL_ID) QTY_DESCRIPTION
FROM (SELECT CER.CATENTRY_ID_CHILD CATENTRY_ID, CEATTR.SEQUENCE, CEATTR.ATTR_ID, CEATTR.ATTRVAL_ID, CEATTR.USAGE
FROM CATENTRYATTR CEATTR,
(SELECT A.CATENTRY_ID_PARENT CATENTRY_ID_PARENT,A.CATENTRY_ID_CHILD CATENTRY_ID_CHILD
FROM CATENTREL A,
(SELECT G.CATENTRY_ID
FROM CATGPENREL G,CATENTRY E
WHERE G.CATENTRY_ID = E.CATENTRY_ID AND G.CATALOG_ID = ${param.catalogId} AND E.MARKFORDELETE = 0
AND G.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} ))
) B,
CATENTRY C
WHERE A.CATENTRY_ID_PARENT=B.CATENTRY_ID AND C.CATENTRY_ID=A.CATENTRY_ID_CHILD AND C.MARKFORDELETE=0 AND A.CATRELTYPE_ID IN ('PRODUCT_VARIANT')
UNION
SELECT A.CATENTRY_ID CATENTRY_ID_PARENT,A.CATENTRY_ID CATENTRY_ID_CHILD
FROM (SELECT G.CATENTRY_ID FROM CATGPENREL G,CATENTRY E
WHERE G.CATENTRY_ID = E.CATENTRY_ID AND G.CATALOG_ID = ${param.catalogId} AND E.MARKFORDELETE = 0
AND G.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} ))
) A
) CER
WHERE CEATTR.CATENTRY_ID = CER.CATENTRY_ID_PARENT AND CEATTR.ATTRVAL_ID <> 0
AND (CER.CATENTRY_ID_PARENT = CER.CATENTRY_ID_CHILD OR
(SELECT COUNT(*) FROM CATENTRYATTR WHERE CATENTRYATTR.CATENTRY_ID = CER.CATENTRY_ID_CHILD AND CEATTR.ATTR_ID = CATENTRYATTR.ATTR_ID) = 0) ) CEA
INNER JOIN ATTR A ON (CEA.ATTR_ID = A.ATTR_ID)
INNER JOIN ATTRVAL V ON (CEA.ATTRVAL_ID = V.ATTRVAL_ID)
${TI_DELTA_JOIN_QUERY_ATTR}
LEFT OUTER JOIN ATTRDESC AD ON (A.ATTR_ID = AD.ATTR_ID AND AD.LANGUAGE_ID = ${param.langId})
LEFT OUTER JOIN ATTRDESC ADF ON (A.ATTR_ID = ADF.ATTR_ID AND ADF.LANGUAGE_ID = ${default.language})
LEFT OUTER JOIN ATTRVALDESC VD ON (V.ATTRVAL_ID = VD.ATTRVAL_ID AND VD.LANGUAGE_ID = ${param.langId})
LEFT OUTER JOIN ATTRVALDESC VDF ON (V.ATTRVAL_ID = VDF.ATTRVAL_ID AND VDF.LANGUAGE_ID = ${default.language})
LEFT OUTER JOIN QTYUNITDSC QD ON (VD.QTYUNIT_ID = QD.QTYUNIT_ID AND QD.LANGUAGE_ID = ${param.langId})
LEFT OUTER JOIN QTYUNITDSC QDF ON (VD.QTYUNIT_ID = QDF.QTYUNIT_ID AND QDF.LANGUAGE_ID = ${default.language}) ${extCatentryWhereSQL}
GROUP BY CEA.CATENTRY_ID
ORDER BY CEA.CATENTRY_ID
OFFSET ${param.offset} ROWS FETCH NEXT ${param.pageSize} ROWS ONLY
| Nom de zone d'index | Type de zone d'index | Description |
|---|---|---|
| Propriétés | ||
| attributes/<identifier>/identifier | id_string | L'identificateur d'attributs externe ; mappé à ATTR.IDENTIFIER |
| attributes/<id>/id | id_string | L'identificateur d'attributs interne ; mappé à ATTR.ATTR_ID |
| attributes/<id>/key | id_string | L'identificateur d'attributs normalisé utilisé comme clé pour cette entrée d'attribut actuelle ; généré à partir de ATTR.IDENTIFIER |
| attributes/<id>/displayable | boolean | Identifie si cet attribut peut être affiché sur la vitrine ; mappé à ATTR.DISPLAYABLE |
| attributes/<id>/merchandisable | boolean | Indique si l'attribut est utilisé dans la création de règles de marchandisage ; mappé à ATTR.MERCHANDISING |
| attributes/<id>/searchable | boolean | Identifie si cet attribut peut être recherché ; mappé à ATTR.SEARCHABLE |
| attributes/<id>/facetable | boolean | Spécifie que l'attribut est utilisé comme une facette dans la vitrine du magasin pour la navigation à facettes ; mappé à ATTR.FACETABLE |
| attributes/<id>/comparable | boolean | Identifie si cet attribut peut être utilisé pour la comparaison ; mappé à ATTR.COMPARABLE |
| attributes/<id>/swatchable | boolean | Identifie si cet attribut peut être affiché avec l'image d'échantillon ; mappé à ATTR.SWATCHABLE |
| attributes/<id>/ribbon | boolean | Identifie si cet attribut peut être affiché en tant que ruban ; mappé à ATTR.STOREDISPLAY |
| attributes/<id>/image1 | raw | Le chemin d'accès de la première image de cette valeur d'attribut ; mappé à ATTRVALDESC.IMAGE1 |
| attributes/<id>/image2 | raw | Le chemin d'accès de la deuxième image de cette valeur d'attribut ; mappé à ATTRVALDESC.IMAGE2 |
| attributes/<id>/sequence | float | L'ordre d'affichage des attributs dans un groupe d'attributs ou dans la racine du dictionnaire d'attributs ; ATTR.SEQUENCE |
| attributes/<id>/usage | raw | Définit l'utilisation de l'attribut ; mappé à ATTR.ATTRUSAGE |
| attributes/<id>/group | raw | Définit le nom de groupe de l'attribut ; mappé à ATTRDESC.GROUPNAME |
| attributes/<id>/name/raw | raw | Le nom de cet attribut ; mappé à ATTRDESC.NAME |
| attributes/<id>/name/text | texte | Identique à ci-dessus |
| attributes/<id>/name/normalized | normalized | Identique à ci-dessus |
| attributes/<id>/value/identifier | id_string | L'identificateur externe de cette valeur d'attribut ; mappé à ATTRVAL.IDENTIFIER |
| attributes/<id>/value/id | id_string | L'ID unique interne pour cette valeur d'attribut ; mappé à ATTRVAL.ATTRVAL_ID |
| attributes/<id>/value/raw | id_string | La valeur de chaîne de cette valeur d'attribut ; mappé à ATTRVALDESC.STRINGVALUE, FLOATVALUE ou INTEGERVALUE |
| attributes/<id>/value/sequence | float | Un nombre qui détermine l'ordre d'affichage d'une liste de valeurs d'attributs admises pour un attribut spécifique ; mappé à ATTRVALDESC.SEQUENCE |
| attributes/<id>/value/unit/identifier | id_string | L'identificateur d'unité de mesure dans lequel cet attribut est mesuré ; mappé à ATTRVALDESC.QTYUNIT_ID |
| attributes/<id>/value/unit/name/raw | raw | La description de l'unité de quantité ; mappé à QTYUNITDSC.DESCRIPTION |
| Langage naturel | ||
| natural/<attribute_type>/colors/red | plage | Il s'agit de la zone spécifique à MatchMaker pour le traitement des couleurs. Le type d'attribut peut être de définition ou de description. |
| natural/<attribute_type>/colors/green | plage | Identique à ci-dessus |
| natural/<attribute_type>/colors/blue | plage | Identique à ci-dessus |
| natural/<attribute_type>/measurements/<unit_of_measure> | plage | Il s'agit des zones spécifiques à MatchMaker pour le traitement des mesures. Voici les unités de mesures prises en charge : - Longueur : kilomètre, mètre, centimètre, millimètre, micromètre, nanomètre, pied, pouce, mile, yard - Poids : tonne métrique, kilogramme, gramme, milligramme, stone, livre, once - Temps : nanoseconde, microseconde, milliseconde, seconde, minute, heure, jour, semaine, mois, année - Volume : gallon, litre, millilitreLe type d'attribut peut être de définition ou de description. |
| natural/<attribute_type>/dimensions/width/<unit_of_measure> | plage | Il s'agit des zones spécifiques à MatchMaker pour le traitement de la dimension. Les éléments ci-après sont l'unité de mesure prise en charge:- kilomètre, mètre, centimètre, millimètre, micromètre, nanomètre, pied, pouce, mile, yardLe type d'attribut peut être de définition ou de description. |
| natural/<attribute_type>/dimensions/length/<unit_of_measure> | plage | Identique à ci-dessus |
| natural/<attribute_type>/dimensions/height/<unit_of_measure> | plage | Identique à ci-dessus |
Etape 10 : Déplacement vers le haut des attributs de niveau article vers leurs parents
SELECT CEA.CATENTRY_ID_PARENT CATENTRY_ID,
LISTAGG(CEA.USAGE, ', ') WITHIN GROUP (ORDER BY CEA.ATTRVAL_ID) USAGE,
LISTAGG(CAST(AD.LANGUAGE_ID AS VARCHAR(32000)), ', ') WITHIN GROUP (ORDER BY CEA.ATTRVAL_ID) LANGUAGE_ID,
LISTAGG(CAST(A.STOREENT_ID AS VARCHAR(32000)), ', ') WITHIN GROUP (ORDER BY CEA.ATTRVAL_ID) STOREENT_ID,
LISTAGG(CAST(A.ATTRTYPE_ID AS VARCHAR(32000)), '###') WITHIN GROUP (ORDER BY CEA.ATTRVAL_ID) ATTRTYPE_ID,
LISTAGG(CAST(CEA.ATTR_ID AS VARCHAR(32000)), ', ') WITHIN GROUP (ORDER BY CEA.ATTRVAL_ID) ATTR_ID,
LISTAGG(CAST(CEA.SEQUENCE AS VARCHAR(32000)), ', ') WITHIN GROUP (ORDER BY CEA.ATTRVAL_ID) ATTR_SEQUENCE,
LISTAGG(CAST(A.IDENTIFIER AS VARCHAR(32000)), '###') WITHIN GROUP (ORDER BY CEA.ATTRVAL_ID) ATTR_IDENTIFIER,
LISTAGG(COALESCE(A.DISPLAYABLE, 0), ', ') WITHIN GROUP (ORDER BY CEA.ATTRVAL_ID) DISPLAYABLE,
LISTAGG(COALESCE(A.SEARCHABLE, 0), ', ') WITHIN GROUP (ORDER BY CEA.ATTRVAL_ID) SEARCHABLE,
LISTAGG(COALESCE(A.COMPARABLE, 0), ', ') WITHIN GROUP (ORDER BY CEA.ATTRVAL_ID) COMPARABLE,
LISTAGG(COALESCE(A.FACETABLE, 0), ', ') WITHIN GROUP (ORDER BY CEA.ATTRVAL_ID) FACETABLE,
LISTAGG(COALESCE(A.MERCHANDISABLE, 0), ', ') WITHIN GROUP (ORDER BY CEA.ATTRVAL_ID) MERCHANDISABLE,
LISTAGG(COALESCE(A.SWATCHABLE, 0), ', ') WITHIN GROUP (ORDER BY CEA.ATTRVAL_ID) SWATCHABLE,
LISTAGG(COALESCE(A.STOREDISPLAY, 0), ', ') WITHIN GROUP (ORDER BY CEA.ATTRVAL_ID) STOREDISPLAY,
LISTAGG(CAST(COALESCE(AD.NAME, ADF.NAME) AS VARCHAR(32000)), '###') WITHIN GROUP (ORDER BY CEA.ATTRVAL_ID) ATTR_NAME,
LISTAGG(COALESCE(CAST(COALESCE(AD.GROUPNAME, ADF.GROUPNAME) AS VARCHAR(32000)), ' '), '###') WITHIN GROUP (ORDER BY CEA.ATTRVAL_ID) GROUPNAME,
LISTAGG(CAST(V.IDENTIFIER AS VARCHAR(32000)), '###') WITHIN GROUP (ORDER BY CEA.ATTRVAL_ID) ATTRVAL_IDENTIFIER,
LISTAGG(COALESCE(CAST(COALESCE(VD.STRINGVALUE, VDF.STRINGVALUE) AS VARCHAR(32000)), ' '), '###') WITHIN GROUP (ORDER BY CEA.ATTRVAL_ID) STRINGVALUE,
LISTAGG(COALESCE(CAST(TO_CHAR(COALESCE(VD.INTEGERVALUE, VDF.INTEGERVALUE)) AS VARCHAR(32000)), ' '), '###') WITHIN GROUP (ORDER BY CEA.ATTRVAL_ID) INTEGERVALUE,
LISTAGG(COALESCE(CAST(TO_CHAR(COALESCE(VD.FLOATVALUE, VDF.FLOATVALUE)) AS VARCHAR(32000)), ' '), '###') WITHIN GROUP (ORDER BY CEA.ATTRVAL_ID) FLOATVALUE,
LISTAGG(COALESCE(CAST(COALESCE(VD.SEQUENCE, VDF.SEQUENCE) AS VARCHAR(32000)), '0'),', ') WITHIN GROUP (ORDER BY CEA.ATTRVAL_ID) ATTRVAL_SEQUENCE,
LISTAGG(COALESCE(CAST(COALESCE(VD.QTYUNIT_ID, VDF.QTYUNIT_ID) AS VARCHAR(32000)), ' '), '###') WITHIN GROUP (ORDER BY CEA.ATTRVAL_ID) QTYUNIT_ID,
LISTAGG(COALESCE(CAST(NULLIF(COALESCE(VD.IMAGE1, VDF.IMAGE1),'') AS VARCHAR(32000)), ' '), '###') WITHIN GROUP (ORDER BY CEA.ATTRVAL_ID) IMAGE1,
LISTAGG(COALESCE(CAST(NULLIF(COALESCE(VD.IMAGE2, VDF.IMAGE2),'') AS VARCHAR(32000)), ' '), '###') WITHIN GROUP (ORDER BY CEA.ATTRVAL_ID) IMAGE2,
LISTAGG(CAST(CEA.ATTRVAL_ID AS VARCHAR(32000)), ', ') WITHIN GROUP (ORDER BY CEA.ATTRVAL_ID) ATTRVAL_ID,
LISTAGG(COALESCE(CAST(COALESCE(QD.DESCRIPTION, QDF.DESCRIPTION) AS VARCHAR(32000)), ' '), '###') WITHIN GROUP (ORDER BY CEA.ATTRVAL_ID) QTY_DESCRIPTION
FROM (SELECT DISTINCT CER.CATENTRY_ID_PARENT, CEATTR.SEQUENCE, CEATTR.ATTR_ID, CEATTR.ATTRVAL_ID, CEATTR.USAGE
FROM CATENTRYATTR CEATTR,
(SELECT A.CATENTRY_ID_PARENT, A.CATENTRY_ID_CHILD
FROM CATENTREL A,
(SELECT G.CATENTRY_ID
FROM CATGPENREL G,CATENTRY E
WHERE G.CATENTRY_ID = E.CATENTRY_ID AND G.CATALOG_ID = ${param.catalogId} AND E.MARKFORDELETE = 0
AND G.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} ))
) B,
CATENTRY C
WHERE A.CATENTRY_ID_PARENT=B.CATENTRY_ID AND C.CATENTRY_ID=A.CATENTRY_ID_CHILD AND C.MARKFORDELETE=0 AND A.CATRELTYPE_ID IN ('PRODUCT_ITEM')
) CER
WHERE CEATTR.CATENTRY_ID = CER.CATENTRY_ID_CHILD AND CEATTR.ATTRVAL_ID <> 0 AND CEATTR.USAGE = 1) CEA
INNER JOIN ATTR A ON (CEA.ATTR_ID = A.ATTR_ID)
INNER JOIN ATTRVAL V ON (CEA.ATTRVAL_ID = V.ATTRVAL_ID)
${TI_DELTA_JOIN_QUERY_ROLLUP_ATTR}
LEFT OUTER JOIN ATTRDESC AD ON (A.ATTR_ID = AD.ATTR_ID AND AD.LANGUAGE_ID = ${param.langId})
LEFT OUTER JOIN ATTRDESC ADF ON (A.ATTR_ID = ADF.ATTR_ID AND ADF.LANGUAGE_ID = ${default.language})
LEFT OUTER JOIN ATTRVALDESC VD ON (V.ATTRVAL_ID = VD.ATTRVAL_ID AND VD.LANGUAGE_ID = ${param.langId})
LEFT OUTER JOIN ATTRVALDESC VDF ON (V.ATTRVAL_ID = VDF.ATTRVAL_ID AND VDF.LANGUAGE_ID = ${default.language})
LEFT OUTER JOIN QTYUNITDSC QD ON (VD.QTYUNIT_ID = QD.QTYUNIT_ID AND QD.LANGUAGE_ID = ${param.langId})
LEFT OUTER JOIN QTYUNITDSC QDF ON (VD.QTYUNIT_ID = QDF.QTYUNIT_ID AND QDF.LANGUAGE_ID = ${default.language}) ${extCatentryIdWhereParentOrChild}
GROUP BY CEA.CATENTRY_ID_PARENT
ORDER BY CEA.CATENTRY_ID_PARENT
LIMIT ${param.offset}, ${param.pageSize}
Ensuite, le jeu de résultats est transmis au processeur FindAttributesFromDatabase pour transformation, à l'aide du tableau à l'étape 9 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.
Etape 11 : Déplacement vers le bas des propriétés de niveau produit vers ses articles
{
"stored_fields": [
"id.*",
"identifier.*",
"relationship.*",
"attributes.*",
"natural.descriptive.*",
"attachments.*",
"images.*",
"manufacturer.*"
],
"size": "100",
"_source": false,
"query": {
"bool": {
"must": {
"match_all": {}
},
"filter": [
{
"bool": {
"should": [
{"term": {"relationship.name": "product"}},
{"term": {"relationship.name": "variant"}}
]
}
},
{
"term": {
"id.store": "${param.storeId}"
}
},
{
"term": {
"id.catalog": "${param.catalogId}"
}
},
{
"term": {
"id.language": "${param.langId}"
}
}
${extCatentryES}
${extDataloadES}
]
}
}
}
- Les zones de réponse - attribute.* et natural.descriptive.* sont mappées à l'aide du tableau ci-dessus à l'étape 9.
- Les zones de réponse - attachments.* et images.* sont mappées à l'aide du tableau ci-dessus à l'étape 7.
- La zone de réponse - manufacture.*, est mappée à l'aide du tableau ci-dessus à l'étape 1.
Etape 12 : Association d'attributs descriptifs enfant
SELECT CEA.CATENTRY_ID,
LISTAGG(CEA.USAGE, ', ') WITHIN GROUP (ORDER BY CEA.ATTRVAL_ID) USAGE,
LISTAGG(AD.LANGUAGE_ID, ', ') WITHIN GROUP (ORDER BY CEA.ATTRVAL_ID) LANGUAGE_ID,
LISTAGG(A.STOREENT_ID, ', ') WITHIN GROUP (ORDER BY CEA.ATTRVAL_ID) STOREENT_ID,
LISTAGG(A.ATTRTYPE_ID, '###') WITHIN GROUP (ORDER BY CEA.ATTRVAL_ID) ATTRTYPE_ID,
LISTAGG(CEA.ATTR_ID, ', ') WITHIN GROUP (ORDER BY CEA.ATTRVAL_ID) ATTR_ID,
LISTAGG(TO_CHAR(COALESCE(CEA.SEQUENCE, 0)), ', ') WITHIN GROUP (ORDER BY CEA.ATTRVAL_ID) ATTR_SEQUENCE,
LISTAGG(A.IDENTIFIER, '###') WITHIN GROUP (ORDER BY CEA.ATTRVAL_ID) ATTR_IDENTIFIER,
LISTAGG(COALESCE(A.DISPLAYABLE, 0), ', ') WITHIN GROUP (ORDER BY CEA.ATTRVAL_ID) DISPLAYABLE,
LISTAGG(COALESCE(A.SEARCHABLE, 0), ', ') WITHIN GROUP (ORDER BY CEA.ATTRVAL_ID) SEARCHABLE,
LISTAGG(COALESCE(A.COMPARABLE, 0), ', ') WITHIN GROUP (ORDER BY CEA.ATTRVAL_ID) COMPARABLE,
LISTAGG(COALESCE(A.FACETABLE, 0), ', ') WITHIN GROUP (ORDER BY CEA.ATTRVAL_ID) FACETABLE,
LISTAGG(COALESCE(A.MERCHANDISABLE, 0), ', ') WITHIN GROUP (ORDER BY CEA.ATTRVAL_ID) MERCHANDISABLE,
LISTAGG(COALESCE(A.SWATCHABLE, 0), ', ') WITHIN GROUP (ORDER BY CEA.ATTRVAL_ID) SWATCHABLE,
LISTAGG(COALESCE(A.STOREDISPLAY, 0), ', ') WITHIN GROUP (ORDER BY CEA.ATTRVAL_ID) STOREDISPLAY,
LISTAGG(COALESCE(AD.NAME, ADF.NAME), '###') WITHIN GROUP (ORDER BY CEA.ATTRVAL_ID) ATTR_NAME,
LISTAGG(COALESCE(COALESCE(AD.GROUPNAME, ADF.GROUPNAME), ' '), '###') WITHIN GROUP (ORDER BY CEA.ATTRVAL_ID) GROUPNAME,
LISTAGG(V.IDENTIFIER, '###') WITHIN GROUP (ORDER BY CEA.ATTRVAL_ID) ATTRVAL_IDENTIFIER,
LISTAGG(COALESCE(COALESCE(VD.STRINGVALUE, VDF.STRINGVALUE), ' ' ), '###') WITHIN GROUP (ORDER BY CEA.ATTRVAL_ID) STRINGVALUE,
LISTAGG(COALESCE(TO_CHAR(COALESCE(VD.INTEGERVALUE, VDF.INTEGERVALUE)), ' '), '###') WITHIN GROUP (ORDER BY CEA.ATTRVAL_ID) INTEGERVALUE,
LISTAGG(COALESCE(TO_CHAR(COALESCE(VD.FLOATVALUE, VDF.FLOATVALUE)), ' '), '###') WITHIN GROUP (ORDER BY CEA.ATTRVAL_ID) FLOATVALUE,
LISTAGG(COALESCE(TO_CHAR(COALESCE(VD.SEQUENCE, VDF.SEQUENCE)), '0'), ', ') WITHIN GROUP (ORDER BY CEA.ATTRVAL_ID) ATTRVAL_SEQUENCE,
LISTAGG(COALESCE(COALESCE(VD.QTYUNIT_ID, VDF.QTYUNIT_ID), ' '), '###') WITHIN GROUP (ORDER BY CEA.ATTRVAL_ID) QTYUNIT_ID,
LISTAGG(COALESCE(NULLIF(COALESCE(VD.IMAGE1, VDF.IMAGE1), ''), ' '), '###') WITHIN GROUP (ORDER BY CEA.ATTRVAL_ID) IMAGE1,
LISTAGG(COALESCE(NULLIF(COALESCE(VD.IMAGE2, VDF.IMAGE2), ''), ' '), '###') WITHIN GROUP (ORDER BY CEA.ATTRVAL_ID) IMAGE2,
LISTAGG(CEA.ATTRVAL_ID, ', ') WITHIN GROUP (ORDER BY CEA.ATTRVAL_ID) ATTRVAL_ID,
LISTAGG(COALESCE(COALESCE(QD.DESCRIPTION, QDF.DESCRIPTION), ' '), '###') WITHIN GROUP (ORDER BY CEA.ATTRVAL_ID) QTY_DESCRIPTION
FROM (SELECT CER.CATENTRY_ID_CHILD CATENTRY_ID, CEATTR.SEQUENCE, CEATTR.ATTR_ID, CEATTR.ATTRVAL_ID, CEATTR.USAGE
FROM CATENTRYATTR CEATTR, CATENTREL CATREL,
(SELECT A.CATENTRY_ID CATENTRY_ID_PARENT,A.CATENTRY_ID CATENTRY_ID_CHILD
FROM (SELECT G.CATENTRY_ID FROM CATGPENREL G,CATENTRY E
WHERE G.CATENTRY_ID = E.CATENTRY_ID AND G.CATALOG_ID = ${param.catalogId} AND E.MARKFORDELETE = 0
AND G.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} ))
) A
) CER
WHERE CEATTR.CATENTRY_ID = CER.CATENTRY_ID_PARENT AND CEATTR.ATTRVAL_ID <> 0
AND CATREL.CATENTRY_ID_CHILD = CEATTR.CATENTRY_ID AND CATREL.CATRELTYPE_ID = 'PRODUCT_ITEM' AND CEATTR.USAGE = 2
AND (CER.CATENTRY_ID_PARENT = CER.CATENTRY_ID_CHILD OR
(SELECT COUNT(*) FROM CATENTRYATTR WHERE CATENTRYATTR.CATENTRY_ID = CER.CATENTRY_ID_CHILD AND CEATTR.ATTR_ID = CATENTRYATTR.ATTR_ID) = 0)) CEA
INNER JOIN ATTR A ON (CEA.ATTR_ID = A.ATTR_ID)
INNER JOIN ATTRVAL V ON (CEA.ATTRVAL_ID = V.ATTRVAL_ID)
${TI_DELTA_JOIN_QUERY_ATTR}
LEFT OUTER JOIN ATTRDESC AD ON (A.ATTR_ID = AD.ATTR_ID AND AD.LANGUAGE_ID = ${param.langId})
LEFT OUTER JOIN ATTRDESC ADF ON (A.ATTR_ID = ADF.ATTR_ID AND ADF.LANGUAGE_ID = ${default.language})
LEFT OUTER JOIN ATTRVALDESC VD ON (V.ATTRVAL_ID = VD.ATTRVAL_ID AND VD.LANGUAGE_ID = ${param.langId})
LEFT OUTER JOIN ATTRVALDESC VDF ON (V.ATTRVAL_ID = VDF.ATTRVAL_ID AND VDF.LANGUAGE_ID = ${default.language})
LEFT OUTER JOIN QTYUNITDSC QD ON (VD.QTYUNIT_ID = QD.QTYUNIT_ID AND QD.LANGUAGE_ID = ${param.langId})
LEFT OUTER JOIN QTYUNITDSC QDF ON (VD.QTYUNIT_ID = QDF.QTYUNIT_ID AND QDF.LANGUAGE_ID = ${default.language}) ${extCatentryWhereSQL}
GROUP BY CEA.CATENTRY_ID
ORDER BY CEA.CATENTRY_ID
OFFSET ${param.offset} ROWS FETCH NEXT ${param.pageSize} ROWS ONLY
Etape 13 : Association des pièces jointes enfant
SELECT CE.CATENTRY_ID,
LISTAGG(ATCHAST.ATCHAST_ID, ', ') WITHIN GROUP (ORDER BY ATCHAST.ATCHAST_ID) ATCHAST_ID,
LISTAGG(ATCHTGT.IDENTIFIER, '###') WITHIN GROUP (ORDER BY ATCHAST.ATCHAST_ID) IDENTIFIER,
LISTAGG(COALESCE(NULLIF(ATCHRELDSC.NAME,''), ' '), '###') WITHIN GROUP (ORDER BY ATCHAST.ATCHAST_ID) NAME,
LISTAGG(COALESCE(NULLIF(ATCHRELDSC.SHORTDESCRIPTION,''), ' '), '###') WITHIN GROUP (ORDER BY ATCHAST.ATCHAST_ID) SHORTDESCRIPTION,
LISTAGG(COALESCE(ATCHAST.ATCHASTPATH, ' '), '###') WITHIN GROUP (ORDER BY ATCHAST.ATCHAST_ID) ATCHASTPATH,
LISTAGG(COALESCE(NULLIF(ATCHAST.DIRECTORYPATH,''), ' '), '###') WITHIN GROUP (ORDER BY ATCHAST.ATCHAST_ID) DIRECTORYPATH,
LISTAGG(COALESCE(NULLIF(ATCHAST.MIMETYPE,''), ' '), '###') WITHIN GROUP (ORDER BY ATCHAST.ATCHAST_ID) MIMETYPE,
LISTAGG(ATCHASTLG.LANGUAGE_ID, ', ') WITHIN GROUP (ORDER BY ATCHAST.ATCHAST_ID) LANGUAGE_ID,
LISTAGG(COALESCE(ATCHRLUS.IMAGE, ' '), '###') WITHIN GROUP (ORDER BY ATCHAST.ATCHAST_ID) IMAGE,
LISTAGG(COALESCE(ATCHRLUS.IDENTIFIER, ' '), '###') WITHIN GROUP (ORDER BY ATCHAST.ATCHAST_ID) RULENAME,
LISTAGG(TO_CHAR(ATCHREL.SEQUENCE), ', ') WITHIN GROUP (ORDER BY ATCHAST.ATCHAST_ID) SEQUENCE
FROM CATENTRY CE
${TI_DELTA_JOIN_QUERY_ATTCH}
JOIN ATCHREL ON (ATCHREL.BIGINTOBJECT_ID = CE.CATENTRY_ID)
JOIN ATCHOBJTYP ON (ATCHREL.ATCHOBJTYP_ID = ATCHOBJTYP.ATCHOBJTYP_ID AND ATCHOBJTYP.IDENTIFIER = 'CATENTRY')
LEFT JOIN ATCHTGT ON (ATCHREL.ATCHTGT_ID = ATCHTGT.ATCHTGT_ID )
JOIN ATCHAST ON (ATCHAST.ATCHTGT_ID = ATCHTGT.ATCHTGT_ID)
LEFT JOIN ATCHASTLG ON (ATCHASTLG.ATCHAST_ID = ATCHAST.ATCHAST_ID)
LEFT JOIN ATCHRELDSC ON (ATCHRELDSC.ATCHREL_ID = ATCHREL.ATCHREL_ID AND ATCHRELDSC.LANGUAGE_ID= ${param.langId})
JOIN ATCHRLUS ON (ATCHREL.ATCHRLUS_ID = ATCHRLUS.ATCHRLUS_ID)
WHERE (ATCHASTLG.ATCHASTLG_ID IS NULL OR ATCHASTLG.LANGUAGE_ID=${param.langId})
AND CE.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 = 'ItemBean') ${extCatentryAndSQL1a}
GROUP BY CE.CATENTRY_IDEnsuite, le jeu de résultats est transmis au processeur FindAttachmentsFromDatabase pour transformation, à l'aide du tableau à l'étape 7 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.
Exemples de mappage de base de données :
Exemples de l'étape 1
{
"CATENTRY_ID":10031,
"MEMBER_ID":7000000000000001001,
"CATENTTYPE_ID":"ProductBean ",
"PARTNUMBER":"AuroraWMDRS-33",
"MARKFORDELETE":0,
"BUYABLE":1,
"STATE":"1",
"LANGUAGE_ID":-1,
"MFPARTNUMBER":null,
"MFNAME":"Luigi Valenti",
"STARTDATE":null,
"ENDDATE":null,
"NAME":"Luigi Valenti Mid Length Cocktail Dress ",
"SHORTDESCRIPTION":"Sleeveless cocktail dress with lace work and satin strip at the waist",
"KEYWORD":null,
"THUMBNAIL":"images/catalog/apparel/women/wcl000_dresses/200x310/wcl000_0037_a_pink.jpg",
"FULLIMAGE":"images/catalog/apparel/women/wcl000_dresses/646x1000/wcl000_0037_a_pink.jpg",
"PUBLISHED":1,
"CATALOG_ID":10001,
"CATGROUP_ID":10001,
"SEQUENCE":31.0,
"LOCALENAME":"en_US ",
"STOREENT_ID":10501
}store id transmis à partir de la classe NiFi FlowFile en tant qu'attribut dans les données de sortie suivantes :{ "update": { "_id": "1--1-10001-10031", "_index": ".auth.1.product.202006160325", "retry_on_conflict": 5, "_source": false } }
{
"doc": {
"buyable": true,
"identifier": {
"specification": "product",
"language": "en_US",
"sku": {
"normalized": "AuroraWMDRS-33",
"raw": "AuroraWMDRS-33"
},
"pn": {
"normalized": "AuroraWMDRS-33",
"raw": "AuroraWMDRS-33"
}
},
"displayable": true,
"description": {
"text_en_US": "Sleeveless cocktail dress with lace work and satin strip at the waist",
"raw": "Sleeveless cocktail dress with lace work and satin strip at the waist",
"text": "Sleeveless cocktail dress with lace work and satin strip at the waist"
},
"type": "product",
"url": {
"image": "images/catalog/apparel/women/wcl000_dresses/646x1000/wcl000_0037_a_pink.jpg",
"thumbnail": "images/catalog/apparel/women/wcl000_dresses/200x310/wcl000_0037_a_pink.jpg"
},
"__meta": {
"created": "2020-08-04T01:16:42.012Z",
"modified": "2020-08-04T01:16:42.034Z",
"version": {
"min": 0,
"max": 0
}
},
"manufacturer": {
"normalized": "Luigi Valenti",
"raw": "Luigi Valenti",
"text": "Luigi Valenti"
},
"name": {
"text_en_US": "Luigi Valenti Mid Length Cocktail Dress",
"normalized": "Luigi Valenti Mid Length Cocktail Dress",
"raw": "Luigi Valenti Mid Length Cocktail Dress",
"text": "Luigi Valenti Mid Length Cocktail Dress"
},
"id": {
"catalog": "10001",
"member": "7000000000000001001",
"catentry": "10031",
"language": "-1",
"store": [
"10501",
"1"
]
},
"state": true,
"relationship": {
"name": "product"
}
},
"doc_as_upsert": true
}Exemples de l'étape 2
{
"CATENTRY_ID": 10352,
"LANGUAGE_ID": -1,
"NAME": "Luigi Valenti Strapless Sundress - Override ",
"SHORTDESCRIPTION": "Strapless sundress with smoked top and gored skirt - Override",
"KEYWORD": null,
"FULLIMAGE": images/catalog/apparel/women/wcl000_dresses/646x1000/wcl000_0011_a_blue.jpg,
"THUMBNAIL": images/catalog/apparel/women/wcl000_dresses/200x310/wcl000_0011_a_blue.jpg
}store id, catalog id, language id transmis à partir de la classe NiFi FlowFile en tant qu'attributs dans les données de sortie suivantes :
{ "update": { "_id": "1--1-10001-10352", "_index": ".auth.1.product.202006160325", "retry_on_conflict": 5, "_source": false } }
{
"doc": {
"name": {
"override": {
"text_en_US": "Luigi Valenti Strapless Sundress - Override",
"normalized": "Luigi Valenti Strapless Sundress - Override",
"raw": "Luigi Valenti Strapless Sundress - Override",
"text": "Luigi Valenti Strapless Sundress - Override"
}
},
"description": {
"override": {
"text_en_US": "Strapless sundress with smoked top and gored skirt - Override",
"raw": "Strapless sundress with smoked top and gored skirt - Override",
"text": "Strapless sundress with smoked top and gored skirt - Override"
}
},
"url": {
"override": {
"image": "images/catalog/apparel/women/wcl000_dresses/646x1000/wcl000_0011_a_blue.jpg",
"thumbnail": "images/catalog/apparel/women/wcl000_dresses/200x310/wcl000_0011_a_blue.jpg"
}
},
"__meta": {
"modified": "2020-08-04T01:28:42.405Z"
}
}
} Exemples de l'étape 3
{
"CATENTRY_ID": 10378,
"DISALLOW_REC_ORDER": 1,
"SUBSCPTYPE_ID": "NONE "
}store id, language id et catalog id transmis à partir de la classe NiFi FlowFile en tant qu'attributs dans les données de sortie suivantes :
{ "update": { "_id": "1--1-10001-10378", "_index": ".auth.1.product.202006160325", "retry_on_conflict": 5, "_source": false } }
{
"doc": {
"subscription": {
"recurring": false,
"type": "NONE"
},
"__meta": {
"modified": "2020-08-04T01:38:24.368Z"
}
}
}Exemples de l'étape 4
{
"CATENTRY_ID_PARENT": 12361,
"CATENTRY_ID_CHILD": "12362, 12363, 12364, 12365, 12366, 3074457345616681168, 3074457345616681169",
"SEQUENCE": "1, 2, 3, 4, 5, 1, 2",
"CATALOG_ID": "10001###10502###10001###10502###10001###10502###10001",
"CATRELTYPE_ID": "PRODUCT_ITEM###PRODUCT_ITEM###PRODUCT_ITEM###PRODUCT_ITEM###PRODUCT_ITEM###PRODUCT_VARIANT###PRODUCT_VARIANT",
"COMPONENT_ID": null,
"QUANTITY": null
}store id, language id, catalog id transmis à partir de la classe NiFi FlowFile en tant qu'attributs dans les données de sortie suivantes :
{ "update": { "_id": "1--1-10001-12361", "_index": ".auth.1.product.202006160325", "retry_on_conflict": 5, "_source": false } }
{
"doc": {
"relationship": {
"item": {
"sequence": [
1,
2,
3,
4,
5
],
"id": [
"12362",
"12363",
"12364",
"12365",
"12366"
]
},
"variant": {
"sequence": [
1,
2
],
"id": [
"3074457345616681168",
"3074457345616681169"
]
}
},
"__meta": {
"modified": "2020-08-04T01:45:28.668Z"
}
}
}Exemples de l'étape 5
{
"CATENTRY_ID": 13040,
"PRODUCTSET_ID": 10001
}store id, language id et catalog id transmis à partir de la classe NiFi FlowFile en tant qu'attributs dans les exemples de données de sortie suivantes :
{ "update": { "_id": "1--1-10001-13040", "_index": ".auth.1.product.202006160325", "retry_on_conflict": 5, "_source": false } }
{
"doc": {
"relationship": {
"set": "10001"
},
"__meta": {
"modified": "2020-08-04T01:54:15.517Z"
}
}
}Exemples de l'étape 6
{
"CATENTRY_ID_FROM": 10001,
"CATENTRY_ID_TO": "10003, 10009, 10011",
"RANK": "1, 2, 3",
"TYPE": "ACCESSORY###ACCESSORY###ACCESSORY",
"QUANTITY": "10, 2, 5",
}store id, language id, catalog id transmis à partir de la classe NiFi FlowFile en tant qu'attributs dans les exemples de données de sortie suivantes :
{ "update": { "_id": "1--1-10001-10001", "_index": ".auth.1.product.202006160325", "retry_on_conflict": 5, "_source": false } }
{
"doc": {
"associations": [
{
"quantity": 10,
"rank": 1,
"id": "10003",
"type": "ACCESSORY"
},
{
"quantity": 2,
"rank": 2,
"id": "10009",
"type": "ACCESSORY"
},
{
"quantity": 5,
"rank": 3,
"id": "10011",
"type": "ACCESSORY"
}
],
"__meta": {
"modified": "2020-08-04T02:03:01.436Z"
}
}
}Exemples de l'étape 7
{
"CATENTRY_ID": 10350,
"ATCHAST_ID": "2231, 2233, 2232, 2234",
"IDENTIFIER": "Dress Angle 1 20201 thumbnail image###Dress Angle 1 20201 full size image###Dress Angle 2 20201 thumbnail image###Dress Angle 2 20201 full size image",
"NAME": "Luigi Valenti Strapless Sundress Angle 1###Luigi Valenti Strapless Sundress Angle 1###Luigi Valenti Strapless Sundress Angle 2###Luigi Valenti Strapless Sundress Angle 2",
"SHORTDESCRIPTION": "Luigi Valenti Strapless Sundress Angle 1###Luigi Valenti Strapless Sundress Angle 1###Luigi Valenti Strapless Sundress Angle 2###Luigi Valenti Strapless Sundress Angle 2",
"ATCHASTPATH": "images/catalog/apparel/women/wcl000_dresses/200x310/wcl000_0011_a_blue.jpg###images/catalog/apparel/women/wcl000_dresses/646x1000/wcl000_0011_a_blue.jpg###images/catalog/apparel/women/wcl000_dresses/200x310/wcl000_0011_b_blue.jpg###images/catalog/apparel/women/wcl000_dresses/646x1000/wcl000_0011_b_blue.jpg",
"DIRECTORYPATH": "images/catalog/apparel/women/###images/catalog/apparel/women/###images/catalog/apparel/women/###images/catalog/apparel/women/",
"MIMETYPE": "image/jpg###image/jpg###image/jpg###image/jpg",
"LANGUAGE_ID": null,
"IMAGE": " ### ### ### ",
"RULENAME": "ANGLEIMAGES_THUMBNAIL###ANGLEIMAGES_FULLIMAGE###ANGLEIMAGES_THUMBNAIL###ANGLEIMAGES_FULLIMAGE",
"SEQUENCE": "1, 1, 2, 2"
}Le processeur FindAttachmentsFromDatabase transforme les données d'entrée avec store id, language id et catalog id transmis à partir de la classe NiFi FlowFile en tant qu'attributs dans les exemples de données de sortie suivantes :
{ "update": { "_id": "1--1-10001-10012", "_index": ".auth.1.product.202006160325", "retry_on_conflict": 5, "_source": false } }
{
"doc": {
"attachments": [
{
"identifier": "Dress Angle 1 20201 thumbnail image",
"sequence": 1.0,
"name.raw": "Luigi Valenti Strapless Sundress Angle 1",
"description.raw": "Luigi Valenti Strapless Sundress Angle 1",
"mime": "image/jpg",
"rule": "ANGLEIMAGES_THUMBNAIL",
"id": "2231",
"url": "images/catalog/apparel/women/wcl000_dresses/200x310/wcl000_0011_a_blue.jpg"
},
{
"identifier": "Dress Angle 2 20201 thumbnail image",
"sequence": 2.0,
"name.raw": "Luigi Valenti Strapless Sundress Angle 2",
"description.raw": "Luigi Valenti Strapless Sundress Angle 2",
"mime": "image/jpg",
"rule": "ANGLEIMAGES_THUMBNAIL",
"id": "2232",
"url": "images/catalog/apparel/women/wcl000_dresses/200x310/wcl000_0011_b_blue.jpg"
},
{
"identifier": "Dress Angle 1 20201 full size image",
"sequence": 1.0,
"name.raw": "Luigi Valenti Strapless Sundress Angle 1",
"description.raw": "Luigi Valenti Strapless Sundress Angle 1",
"mime": "image/jpg",
"rule": "ANGLEIMAGES_FULLIMAGE",
"id": "2233",
"url": "images/catalog/apparel/women/wcl000_dresses/646x1000/wcl000_0011_a_blue.jpg"
},
{
"identifier": "Dress Angle 2 20201 full size image",
"sequence": 2.0,
"name.raw": "Luigi Valenti Strapless Sundress Angle 2",
"description.raw": "Luigi Valenti Strapless Sundress Angle 2",
"mime": "image/jpg",
"rule": "ANGLEIMAGES_FULLIMAGE",
"id": "2234",
"url": "images/catalog/apparel/women/wcl000_dresses/646x1000/wcl000_0011_b_blue.jpg"
}
],
"images": [
{
"sequence": 1.0,
"image": "images/catalog/apparel/women/wcl000_dresses/646x1000/wcl000_0011_a_blue.jpg",
"thumbnail": "images/catalog/apparel/women/wcl000_dresses/200x310/wcl000_0011_a_blue.jpg",
"name": "Luigi Valenti Strapless Sundress Angle 1"
},
{
"sequence": 2.0,
"image": "images/catalog/apparel/women/wcl000_dresses/646x1000/wcl000_0011_b_blue.jpg",
"thumbnail": "images/catalog/apparel/women/wcl000_dresses/200x310/wcl000_0011_b_blue.jpg",
"name": "Luigi Valenti Strapless Sundress Angle 2"
}
],
"__meta": {
"modified": "2020-08-04T02:20:04.268Z"
}
}
}
Exemples de l'étape 8
{
"CATENTRY_ID": 10001,
"LANGUAGE_ID": -1,
"NAME": "Hermitage Fit and Flare Dress-Override ",
"SHORTDESCRIPTION": "Jewel-toned cocktail dress with fitted bodice and gently flared skirt-Override",
"KEYWORD": null,
"FULLIMAGE": null,
"THUMBNAIL": null,
"LOCALENAME": "en_US"
}store id, language id, catalog id transmis à partir de la classe NiFi FlowFile en tant qu'attributs dans les exemples de données de sortie suivantes :
{ "update": { "_id": "1--1-10001-10001", "_index": ".auth.1.product.202006160325", "retry_on_conflict": 5, "_source": false } }
{
"doc": {
"category": {
"10502-1-3-10001": {
"parent": "10001",
"sequence": "1",
"catalog": "10502",
"path": {
"name": [
"Apparel",
"Women",
"Dresses"
],
"id": [
"1",
"3",
"10001"
]
},
"name": "Dresses"
}
},
"path": {
"10502": [
"/1/3/10001"
]
}
},
"doc_as_upsert": true
}Exemples de l'étape 9
{
"CATENTRY_ID" : 10579,
"USAGE" : "1, 1",
"LANGUAGE_ID" : "-1, -1",
"STOREENT_ID" : "10501, 10501",
"ATTRTYPE_ID" : "STRING ###STRING ",
"ATTR_ID" : "7000000000000000001, 7000000000000000002",
"DISPLAY_SEQUENCE" : "1, 1",
"ATTR_IDENTIFIER" : "swatchSize###swatchcolor",
"ATTR_SEQUENCE" : "0, 0",
"DISPLAYABLE" : "1, 1",
"SEARCHABLE" : "0, 0",
"COMPARABLE" : "1, 1",
"FACETABLE" : "0, 0",
"MERCHANDISABLE" : "0, 0",
"SWATCHABLE" : "0, 0",
"ATTR_NAME" : "Available Sizes###Color",
"GROUPNAME" : " ### ",
"ATTRVAL_IDENTIFIER" : "S###Silver",
"STRINGVALUE" : "S###Silver",
"INTEGERVALUE" : " ### ",
"FLOATVALUE" : " ### ",
"ATTRVAL_SEQUENCE" : "1, 1",
"QTYUNIT_ID" : "C62 ###C62 ",
"IMAGE1" : "images/catalog/apparel/women/Swatches/swatch_size/size_s_enabled.png###images/catalog/apparel/women/Swatches/swatch_silver.png",
"IMAGE2" : " ### ",
"ATTRVAL_ID" : "7000000000000000001, 7000000000000000015",
"QTY_DESCRIPTION" : "one###one"
}store id, language id, catalog id transmis à partir de la classe NiFi FlowFile en tant qu'attributs dans les exemples de données de sortie suivantes :
{ "update": { "_id": "1--1-10001-10579", "_index": ".auth.1.product.202006160325", "retry_on_conflict": 5, "_source": false } }
{
"doc": {
"attributes": {
"swatchcolor": {
"identifier": "swatchcolor",
"usage": "Defining",
"displayable": true,
"merchandisable": false,
"searchable": false,
"sequence": 0,
"name": {
"normalized": "Color",
"raw": "Color",
"text": "Color"
},
"facetable": false,
"id": "7000000000000000002",
"comparable": true,
"value": [
{
"identifier": "Silver",
"sequence": 1,
"unit": {
"identifier": "C62",
"name": {
"raw": "one"
}
},
"normalized": "Silver",
"raw": "Silver",
"id": "7000000000000000015",
"image1": "images/catalog/apparel/women/Swatches/swatch_silver.png"
}
],
"key": "swatchcolor",
"swatchable": false
},
"swatchsize": {
"identifier": "swatchSize",
"usage": "Defining",
"displayable": true,
"merchandisable": false,
"searchable": false,
"sequence": 0,
"name": {
"normalized": "Available Sizes",
"raw": "Available Sizes",
"text": "Available Sizes"
},
"facetable": false,
"id": "7000000000000000001",
"comparable": true,
"value": [
{
"identifier": "S",
"sequence": 1,
"unit": {
"identifier": "C62",
"name": {
"raw": "one"
}
},
"normalized": "S",
"raw": "S",
"id": "7000000000000000001",
"image1": "images/catalog/apparel/women/Swatches/swatch_size/size_s_enabled.png"
}
],
"key": "swatchsize",
"swatchable": false
}
},
"__meta": {
"modified": "2020-08-04T02:30:16.091Z"
}
}
}Exemples de l'étape 10
{
"CATENTRY_ID": 13296,
"USAGE": "1, 1, 1, 1, 1, 1, 1",
"LANGUAGE_ID": "-1, -1, -1, -1, -1, -1, -1",
"STOREENT_ID": "10501, 10501, 10501, 10501, 10501, 10501, 10501",
"ATTRTYPE_ID": "STRING ###STRING ###STRING ###STRING ###STRING ###STRING ###STRING ",
"ATTR_ID": "7000000000000000138, 7000000000000000142, 7000000000000000142, 7000000000000000142, 7000000000000000141, 7000000000000000141, 7000000000000000141",
"DISPLAY_SEQUENCE": "0E0, 1.0E0, 1.0E0, 1.0E0, 2.0E0, 2.0E0, 2.0E0",
"ATTR_IDENTIFIER": "hardware_fasteners_boltsThread size###hardware_fasteners_boltsMaterial###hardware_fasteners_boltsMaterial###hardware_fasteners_boltsMaterial###hardware_fasteners_boltsLength###hardware_fasteners_boltsLength###hardware_fasteners_boltsLength",
"ATTR_SEQUENCE": "0E0, 0E0, 0E0, 0E0, 0E0, 0E0, 0E0",
"DISPLAYABLE": "1, 1, 1, 1, 1, 1, 1",
"SEARCHABLE": "0, 0, 0, 0, 0, 0, 0",
"COMPARABLE": "1, 1, 1, 1, 1, 1, 1",
"FACETABLE": "0, 0, 0, 0, 0, 0, 0",
"MERCHANDISABLE": "0, 0, 0, 0, 0, 0, 0",
"SWATCHABLE": "0, 0, 0, 0, 0, 0, 0",
"ATTR_NAME": "Thread size###Material###Material###Material###Length###Length###Length",
"GROUPNAME": " ### ### ### ### ### ### ",
"ATTRVAL_IDENTIFIER": "3/4\"-10###Stainless steel###Alloy steel###Brass###2\"###2 1/4\"###3\"",
"STRINGVALUE": "3/4\"-10###Stainless steel###Alloy steel###Brass###2\"###2 1/4\"###3\"",
"INTEGERVALUE": " ### ### ### ### ### ### ",
"FLOATVALUE": " ### ### ### ### ### ### ",
"ATTRVAL_SEQUENCE": "0E0, 1.0E0, 1.0E0, 1.0E0, 2.0E0, 2.0E0, 2.0E0",
"QTYUNIT_ID": "C62 ###C62 ###C62 ###C62 ###C62 ###C62 ###C62 ",
"IMAGE1": " ### ### ### ### ### ### ",
"IMAGE2": " ### ### ### ### ### ### ",
"ATTRVAL_ID": "7000000000000002590, 7000000000000002612, 7000000000000002613, 7000000000000002614, 7000000000000002607, 7000000000000002608, 7000000000000002609",
"QTY_DESCRIPTION": "one###one###one###one###one###one###one"
}
{ "update": { "_id": "1--1-10001-13296", "_index": ".auth.1.product.202006160325", "retry_on_conflict": 5, "_source": false } }
{
"doc": {
"attributes": {
"hardware_fasteners_boltslength": {
"identifier": "hardware_fasteners_boltsLength",
"usage": "Defining",
"displayable": true,
"merchandisable": false,
"searchable": false,
"sequence": 0,
"name": {
"normalized": "Length",
"raw": "Length",
"text": "Length"
},
"facetable": false,
"id": "7000000000000000141",
"comparable": true,
"value": [
{
"identifier": "2\"",
"sequence": 2,
"unit": {
"identifier": "C62",
"name": {
"raw": "one"
}
},
"normalized": "2\"",
"raw": "2\"",
"id": "7000000000000002607"
},
{
"identifier": "2 1/4\"",
"sequence": 2,
"unit": {
"identifier": "C62",
"name": {
"raw": "one"
}
},
"normalized": "2 1/4\"",
"raw": "2 1/4\"",
"id": "7000000000000002608"
},
{
"identifier": "3\"",
"sequence": 2,
"unit": {
"identifier": "C62",
"name": {
"raw": "one"
}
},
"normalized": "3\"",
"raw": "3\"",
"id": "7000000000000002609"
}
],
"key": "hardware_fasteners_boltslength",
"swatchable": false
},
"hardware_fasteners_boltsthreadsize": {
"identifier": "hardware_fasteners_boltsThread size",
"usage": "Defining",
"displayable": true,
"merchandisable": false,
"searchable": false,
"sequence": 0,
"name": {
"normalized": "Thread size",
"raw": "Thread size",
"text": "Thread size"
},
"facetable": false,
"id": "7000000000000000138",
"comparable": true,
"value": [
{
"identifier": "3/4\"-10",
"sequence": 0,
"unit": {
"identifier": "C62",
"name": {
"raw": "one"
}
},
"normalized": "3/4\"-10",
"raw": "3/4\"-10",
"id": "7000000000000002590"
}
],
"key": "hardware_fasteners_boltsthreadsize",
"swatchable": false
},
"hardware_fasteners_boltsmaterial": {
"identifier": "hardware_fasteners_boltsMaterial",
"usage": "Defining",
"displayable": true,
"merchandisable": false,
"searchable": false,
"sequence": 0,
"name": {
"normalized": "Material",
"raw": "Material",
"text": "Material"
},
"facetable": false,
"id": "7000000000000000142",
"comparable": true,
"value": [
{
"identifier": "Stainless steel",
"sequence": 1,
"unit": {
"identifier": "C62",
"name": {
"raw": "one"
}
},
"normalized": "Stainless steel",
"raw": "Stainless steel",
"id": "7000000000000002612"
},
{
"identifier": "Alloy steel",
"sequence": 1,
"unit": {
"identifier": "C62",
"name": {
"raw": "one"
}
},
"normalized": "Alloy steel",
"raw": "Alloy steel",
"id": "7000000000000002613"
},
{
"identifier": "Brass",
"sequence": 1,
"unit": {
"identifier": "C62",
"name": {
"raw": "one"
}
},
"normalized": "Brass",
"raw": "Brass",
"id": "7000000000000002614"
}
],
"key": "hardware_fasteners_boltsmaterial",
"swatchable": false
}
},
"__meta": {
"modified": "2020-08-04T02:55:52.644Z"
}
}
}Exemples de l'étape 11
{
"_index": ".auth.1.product.202007021505",
"_type": "_doc",
"_id": "1--1-10001-11062",
"_score": 1,
"fields": {
"id.catentry": [
"11062"
],
"attributes.shape.merchandisable": [
false
],
"attributes.material.displayable": [
true
],
"attributes.style.sequence": [
0
],
"attributes.womenskirtssize.value.unit.identifier": [
"C62",
"C62",
"C62",
"C62",
"C62",
"C62",
"C62"
],
"attributes.length.value.raw": [
"Mini cut length"
],
"attributes.occasion.name.normalized": [
"occasion"
],
"attributes.style.value.identifier": [
"WCL003_0303"
],
"attributes.material.value.sequence": [
3
],
"attributes.length.value.id": [
"7000000000000000369"
],
"attributes.style.value.sequence": [
1
],
"attributes.cleaning.value.raw": [
"Machine wash"
],
"id.store": [
"10501",
"1"
],
"attributes.womenskirtscolor.value.identifier": [
"Green"
],
"attributes.cleaning.sequence": [
11
],
"attributes.length.usage": [
"Descriptive"
],
"attributes.womenskirtssize.usage": [
"Defining"
],
"attributes.womenskirtscolor.usage": [
"Defining"
],
"attributes.womenskirtscolor.name.normalized": [
"color"
],
"attributes.womenskirtssize.value.identifier": [
"XS",
"S",
"M",
"L",
"XL",
"XXL",
"XXXL"
],
"attributes.style.identifier": [
"Style"
],
"attributes.occasion.value.identifier": [
"WCL003_0303"
],
"attributes.womenskirtscolor.value.unit.identifier": [
"C62"
],
"attributes.style.merchandisable": [
false
],
"attributes.length.name.normalized": [
"length"
],
"attributes.cleaning.value.text": [
"Machine wash"
],
"attributes.length.value.sequence": [
2
],
"id.catalog": [
"10001"
],
"attributes.womenskirtssize.value.id": [
"7000000000000000316",
"7000000000000000317",
"7000000000000000318",
"7000000000000000319",
"7000000000000000320",
"7000000000000000321",
"7000000000000000322"
],
"attributes.length.key": [
"length"
],
"attributes.length.name.text": [
"Length"
],
"attributes.occasion.value.id": [
"7000000000000000384"
],
"attributes.material.searchable": [
false
],
"attributes.length.displayable": [
true
],
"attributes.womenskirtssize.name.text": [
"Size"
],
"attributes.shape.facetable": [
false
],
"attributes.material.usage": [
"Descriptive"
],
"attributes.shape.comparable": [
true
],
"attributes.cleaning.searchable": [
true
],
"attributes.womenskirtscolor.sequence": [
0
],
"attributes.womenskirtssize.searchable": [
false
],
"attributes.length.facetable": [
false
],
"attributes.style.value.normalized": [
"pull on"
],
"attributes.womenskirtscolor.value.normalized": [
"green"
],
"attributes.occasion.comparable": [
true
],
"id.language": [
"-1"
],
"attributes.style.comparable": [
true
],
"attributes.shape.displayable": [
true
],
"attributes.style.id": [
"7000000000000000010"
],
"attributes.shape.value.sequence": [
0
],
"attributes.length.name.raw": [
"Length"
],
"attributes.shape.identifier": [
"Shape"
],
"attributes.style.name.raw": [
"Style"
],
"attributes.cleaning.facetable": [
true
],
"attributes.womenskirtscolor.name.text": [
"Color"
],
"attributes.occasion.name.text": [
"Occasion"
],
"attributes.material.swatchable": [
false
],
"attributes.womenskirtssize.swatchable": [
false
],
"attributes.style.facetable": [
false
],
"attributes.length.value.normalized": [
"mini cut length"
],
"attributes.womenskirtssize.name.raw": [
"Size"
],
"attributes.occasion.name.raw": [
"Occasion"
],
"attributes.womenskirtscolor.value.raw": [
"Green"
],
"attributes.womenskirtssize.value.unit.name.raw": [
"one",
"one",
"one",
"one",
"one",
"one",
"one"
],
"attributes.length.value.identifier": [
"WCL003_0303"
],
"attributes.womenskirtssize.merchandisable": [
false
],
"attributes.cleaning.swatchable": [
false
],
"attributes.womenskirtscolor.comparable": [
true
],
"attributes.womenskirtssize.value.raw": [
"XS",
"S",
"M",
"L",
"XL",
"XXL",
"XXXL"
],
"attributes.occasion.value.sequence": [
4
],
"attributes.womenskirtscolor.displayable": [
true
],
"attributes.cleaning.usage": [
"Descriptive"
],
"attributes.material.sequence": [
0
],
"attributes.shape.sequence": [
0
],
"attributes.material.facetable": [
false
],
"attributes.material.key": [
"material"
],
"attributes.length.sequence": [
0
],
"attributes.womenskirtscolor.searchable": [
false
],
"attributes.cleaning.identifier": [
"Cleaning"
],
"attributes.womenskirtssize.value.normalized": [
"xs",
"s",
"m",
"l",
"xl",
"xxl",
"xxxl"
],
"attributes.womenskirtssize.displayable": [
true
],
"attributes.womenskirtscolor.swatchable": [
false
],
"attributes.cleaning.name.raw": [
"Cleaning"
],
"attributes.womenskirtscolor.merchandisable": [
false
],
"attributes.shape.searchable": [
false
],
"attributes.cleaning.comparable": [
true
],
"attributes.shape.usage": [
"Descriptive"
],
"attributes.cleaning.key": [
"cleaning"
],
"attributes.cleaning.value.id": [
"7000000000000000324"
],
"attributes.womenskirtssize.facetable": [
false
],
"attributes.womenskirtssize.identifier": [
"WomenSkirtsSize"
],
"attributes.cleaning.id": [
"7000000000000000021"
],
"attributes.cleaning.displayable": [
true
],
"attributes.style.value.id": [
"7000000000000000356"
],
"attributes.style.displayable": [
true
],
"attributes.length.comparable": [
true
],
"attributes.shape.name.normalized": [
"shape"
],
"attributes.length.id": [
"7000000000000000025"
],
"attributes.material.id": [
"7000000000000000009"
],
"attributes.womenskirtssize.name.normalized": [
"size"
],
"attributes.occasion.value.raw": [
"Casual"
],
"attributes.length.identifier": [
"Length"
],
"attributes.womenskirtscolor.id": [
"7000000000000000023"
],
"attributes.occasion.identifier": [
"Occasion"
],
"attributes.occasion.sequence": [
0
],
"relationship.item.id": [
"11063",
"11064"
],
"relationship.variant.id": [
"3074457345616681168",
"3074457345616681169"
],
"relationship.variant.sequence": [
"100.00",
"200.00"
],
"attributes.shape.name.raw": [
"Shape"
],
"attributes.style.key": [
"style"
],
"attributes.shape.key": [
"shape"
],
"attributes.style.searchable": [
false
],
"attributes.womenskirtscolor.value.sequence": [
0
],
"attributes.womenskirtssize.id": [
"7000000000000000024"
],
"attributes.length.searchable": [
false
],
"attributes.cleaning.value.sequence": [
6
],
"attributes.womenskirtscolor.key": [
"womenskirtscolor"
],
"attributes.material.identifier": [
"Material"
],
"relationship.item.sequence": [
1,
2
],
"attributes.material.name.raw": [
"Material"
],
"attributes.womenskirtssize.comparable": [
true
],
"attributes.occasion.value.normalized": [
"casual"
],
"attributes.womenskirtssize.sequence": [
0
],
"attributes.shape.value.id": [
"7000000000000000402"
],
"relationship.name": [
"product"
],
"attributes.cleaning.name.normalized": [
"cleaning"
],
"attributes.womenskirtscolor.identifier": [
"WomenSkirtsColor"
],
"attributes.material.comparable": [
true
],
"attributes.occasion.displayable": [
true
],
"attributes.style.value.raw": [
"Pull on"
],
"attributes.occasion.id": [
"7000000000000000011"
],
"attributes.womenskirtscolor.value.id": [
"7000000000000000311"
],
"attributes.shape.value.identifier": [
"WCL003_0303"
],
"attributes.material.merchandisable": [
false
],
"attributes.style.usage": [
"Descriptive"
],
"attributes.shape.id": [
"7000000000000000026"
],
"attributes.occasion.searchable": [
false
],
"attributes.length.merchandisable": [
false
],
"attributes.occasion.merchandisable": [
false
],
"attributes.womenskirtscolor.facetable": [
false
],
"attributes.cleaning.merchandisable": [
false
],
"attributes.material.value.raw": [
"Cotton"
],
"attributes.womenskirtssize.value.sequence": [
1,
1,
1,
1,
1,
1,
1
],
"attributes.womenskirtscolor.value.unit.name.raw": [
"one"
],
"attributes.womenskirtscolor.name.raw": [
"Color"
],
"id.member": [
"7000000000000001001"
],
"attributes.occasion.key": [
"occasion"
],
"attributes.material.value.id": [
"7000000000000000341"
],
"attributes.style.name.normalized": [
"style"
],
"attributes.shape.swatchable": [
false
],
"attributes.shape.value.raw": [
"Flocked"
],
"attributes.womenskirtssize.key": [
"womenskirtssize"
],
"attributes.material.value.normalized": [
"cotton"
],
"attributes.material.name.text": [
"Material"
],
"attributes.occasion.usage": [
"Descriptive"
],
"attributes.cleaning.value.normalized": [
"machine wash"
],
"attributes.style.swatchable": [
false
],
"attributes.material.value.identifier": [
"WCL003_0303"
],
"attributes.cleaning.name.text": [
"Cleaning"
],
"attributes.shape.name.text": [
"Shape"
],
"attributes.shape.value.normalized": [
"flocked"
],
"attributes.occasion.facetable": [
false
],
"attributes.occasion.swatchable": [
false
],
"attributes.material.name.normalized": [
"material"
],
"attributes.style.name.text": [
"Style"
],
"attributes.cleaning.value.identifier": [
"WCL003_0303"
],
"attributes.length.swatchable": [
false
]
}
}{ "update": { "_id": "1--1-10001-11063", "_index": ".auth.1.product.202007021505", "retry_on_conflict": 5, "_source": false } }
{ "doc": {"attributes":{"occasion":{"identifier":"Occasion","usage":"Descriptive","displayable":true,"merchandisable":false,"searchable":false,"sequence":0,"name":{"normalized":"occasion","raw":"Occasion","text":"Occasion"},"facetable":false,"id":"7000000000000000011","value":{"identifier":"WCL003_0303","sequence":4,"normalized":"casual","raw":"Casual","id":"7000000000000000384"},"comparable":true,"key":"occasion","swatchable":false},"cleaning":{"identifier":"Cleaning","usage":"Descriptive","displayable":true,"merchandisable":false,"searchable":true,"sequence":11,"name":{"normalized":"cleaning","raw":"Cleaning","text":"Cleaning"},"facetable":true,"id":"7000000000000000021","value":{"sequence":6,"identifier":"WCL003_0303","normalized":"machine wash","raw":"Machine wash","text":"Machine wash","id":"7000000000000000324"},"comparable":true,"key":"cleaning","swatchable":false},"shape":{"identifier":"Shape","usage":"Descriptive","displayable":true,"merchandisable":false,"searchable":false,"sequence":0,"name":{"normalized":"shape","raw":"Shape","text":"Shape"},"facetable":false,"id":"7000000000000000026","comparable":true,"value":{"sequence":0,"identifier":"WCL003_0303","normalized":"flocked","raw":"Flocked","id":"7000000000000000402"},"key":"shape","swatchable":false},"material":{"identifier":"Material","usage":"Descriptive","displayable":true,"merchandisable":false,"searchable":false,"sequence":0,"name":{"normalized":"material","raw":"Material","text":"Material"},"facetable":false,"id":"7000000000000000009","value":{"sequence":3,"identifier":"WCL003_0303","normalized":"cotton","raw":"Cotton","id":"7000000000000000341"},"comparable":true,"key":"material","swatchable":false},"length":{"identifier":"Length","usage":"Descriptive","displayable":true,"merchandisable":false,"searchable":false,"sequence":0,"name":{"normalized":"length","raw":"Length","text":"Length"},"facetable":false,"id":"7000000000000000025","value":{"sequence":2,"identifier":"WCL003_0303","normalized":"mini cut length","raw":"Mini cut length","id":"7000000000000000369"},"comparable":true,"key":"length","swatchable":false},"style":{"identifier":"Style","usage":"Descriptive","displayable":true,"merchandisable":false,"searchable":false,"sequence":0,"name":{"normalized":"style","raw":"Style","text":"Style"},"facetable":false,"id":"7000000000000000010","value":{"identifier":"WCL003_0303","sequence":1,"normalized":"pull on","raw":"Pull on","id":"7000000000000000356"},"comparable":true,"key":"style","swatchable":false}},"relationship":{"product":{"sequence":[1.0],"id":["11062"]}},"__meta":{"modified":"2020-08-04T03:08:32.521Z"}} }
{ "update": { "_id": "1--1-10001-11064", "_index": ".auth.1.product.202007021505", "retry_on_conflict": 5, "_source": false } }
{ "doc": {"attributes":{"occasion":{"identifier":"Occasion","usage":"Descriptive","displayable":true,"merchandisable":false,"searchable":false,"sequence":0,"name":{"normalized":"occasion","raw":"Occasion","text":"Occasion"},"facetable":false,"id":"7000000000000000011","value":{"identifier":"WCL003_0303","sequence":4,"normalized":"casual","raw":"Casual","id":"7000000000000000384"},"comparable":true,"key":"occasion","swatchable":false},"cleaning":{"identifier":"Cleaning","usage":"Descriptive","displayable":true,"merchandisable":false,"searchable":true,"sequence":11,"name":{"normalized":"cleaning","raw":"Cleaning","text":"Cleaning"},"facetable":true,"id":"7000000000000000021","value":{"sequence":6,"identifier":"WCL003_0303","normalized":"machine wash","raw":"Machine wash","text":"Machine wash","id":"7000000000000000324"},"comparable":true,"key":"cleaning","swatchable":false},"shape":{"identifier":"Shape","usage":"Descriptive","displayable":true,"merchandisable":false,"searchable":false,"sequence":0,"name":{"normalized":"shape","raw":"Shape","text":"Shape"},"facetable":false,"id":"7000000000000000026","comparable":true,"value":{"sequence":0,"identifier":"WCL003_0303","normalized":"flocked","raw":"Flocked","id":"7000000000000000402"},"key":"shape","swatchable":false},"material":{"identifier":"Material","usage":"Descriptive","displayable":true,"merchandisable":false,"searchable":false,"sequence":0,"name":{"normalized":"material","raw":"Material","text":"Material"},"facetable":false,"id":"7000000000000000009","value":{"sequence":3,"identifier":"WCL003_0303","normalized":"cotton","raw":"Cotton","id":"7000000000000000341"},"comparable":true,"key":"material","swatchable":false},"length":{"identifier":"Length","usage":"Descriptive","displayable":true,"merchandisable":false,"searchable":false,"sequence":0,"name":{"normalized":"length","raw":"Length","text":"Length"},"facetable":false,"id":"7000000000000000025","value":{"sequence":2,"identifier":"WCL003_0303","normalized":"mini cut length","raw":"Mini cut length","id":"7000000000000000369"},"comparable":true,"key":"length","swatchable":false},"style":{"identifier":"Style","usage":"Descriptive","displayable":true,"merchandisable":false,"searchable":false,"sequence":0,"name":{"normalized":"style","raw":"Style","text":"Style"},"facetable":false,"id":"7000000000000000010","value":{"identifier":"WCL003_0303","sequence":1,"normalized":"pull on","raw":"Pull on","id":"7000000000000000356"},"comparable":true,"key":"style","swatchable":false}},"relationship":{"product":{"sequence":[2.0],"id":["11062"]}},"__meta":{"modified":"2020-08-04T03:08:33.071Z"}} }
{ "update": { "_id": "1--1-10001-3074457345616681168", "_index": ".auth.1.product.202007021505", "retry_on_conflict": 5, "_source": false } }
{ "doc": {"attributes":{"occasion":{"identifier":"Occasion","usage":"Descriptive","displayable":true,"merchandisable":false,"searchable":false,"sequence":0,"name":{"normalized":"occasion","raw":"Occasion","text":"Occasion"},"facetable":false,"id":"7000000000000000011","value":{"identifier":"WCL003_0303","sequence":4,"normalized":"casual","raw":"Casual","id":"7000000000000000384"},"comparable":true,"key":"occasion","swatchable":false},"cleaning":{"identifier":"Cleaning","usage":"Descriptive","displayable":true,"merchandisable":false,"searchable":true,"sequence":11,"name":{"normalized":"cleaning","raw":"Cleaning","text":"Cleaning"},"facetable":true,"id":"7000000000000000021","value":{"sequence":6,"identifier":"WCL003_0303","normalized":"machine wash","raw":"Machine wash","text":"Machine wash","id":"7000000000000000324"},"comparable":true,"key":"cleaning","swatchable":false},"shape":{"identifier":"Shape","usage":"Descriptive","displayable":true,"merchandisable":false,"searchable":false,"sequence":0,"name":{"normalized":"shape","raw":"Shape","text":"Shape"},"facetable":false,"id":"7000000000000000026","comparable":true,"value":{"sequence":0,"identifier":"WCL003_0303","normalized":"flocked","raw":"Flocked","id":"7000000000000000402"},"key":"shape","swatchable":false},"material":{"identifier":"Material","usage":"Descriptive","displayable":true,"merchandisable":false,"searchable":false,"sequence":0,"name":{"normalized":"material","raw":"Material","text":"Material"},"facetable":false,"id":"7000000000000000009","value":{"sequence":3,"identifier":"WCL003_0303","normalized":"cotton","raw":"Cotton","id":"7000000000000000341"},"comparable":true,"key":"material","swatchable":false},"length":{"identifier":"Length","usage":"Descriptive","displayable":true,"merchandisable":false,"searchable":false,"sequence":0,"name":{"normalized":"length","raw":"Length","text":"Length"},"facetable":false,"id":"7000000000000000025","value":{"sequence":2,"identifier":"WCL003_0303","normalized":"mini cut length","raw":"Mini cut length","id":"7000000000000000369"},"comparable":true,"key":"length","swatchable":false},"style":{"identifier":"Style","usage":"Descriptive","displayable":true,"merchandisable":false,"searchable":false,"sequence":0,"name":{"normalized":"style","raw":"Style","text":"Style"},"facetable":false,"id":"7000000000000000010","value":{"identifier":"WCL003_0303","sequence":1,"normalized":"pull on","raw":"Pull on","id":"7000000000000000356"},"comparable":true,"key":"style","swatchable":false}},"relationship":{"product":{"sequence":[100.0],"id":["11062"]}},"__meta":{"modified":"2020-08-04T03:08:33.073Z"}} }Exemples de l'étape 12
{
"CATENTRY_ID" : 10350,
"USAGE" : "2",
"LANGUAGE_ID" : "-1",
"STOREENT_ID" : "10501",
"ATTRTYPE_ID" : "STRING ",
"ATTR_ID" : "7000000000000000005",
"DISPLAY_SEQUENCE" : "1",
"ATTR_IDENTIFIER" : "material",
"ATTR_SEQUENCE" : "0",
"DISPLAYABLE" : "1",
"SEARCHABLE" : "0",
"STOREDISPLAY": "0",
"COMPARABLE" : "1",
"FACETABLE" : "0",
"MERCHANDISABLE" : "0",
"SWATCHABLE" : "0",
"ATTR_NAME" : "Material",
"GROUPNAME" : " ",
"ATTRVAL_IDENTIFIER" : "Cotton blend",
"STRINGVALUE" : "Cotton blend",
"INTEGERVALUE" : " ",
"FLOATVALUE" : " ",
"ATTRVAL_SEQUENCE" : "23",
"QTYUNIT_ID" : "C62 ",
"IMAGE1" : " ",
"IMAGE2" : " ",
"ATTRVAL_ID" : "7000000000000000032",
"QTY_DESCRIPTION" : "one"
}
{ "update": { "_id": "1--1-10001-10350", "_index": ".auth.1.product.202006160325", "retry_on_conflict": 5, "_source": false } }
{
"doc": {
"7000000000000000005": {
"identifier": "material",
"usage": "Descriptive",
"displayable": true,
"ribbon": false,
"merchandisable": false,
"searchable": false,
"sequence": 1.0,
"name": {
"normalized": "material",
"raw": "Material",
"text": "Material"
},
"facetable": false,
"id": "7000000000000000005",
"value": {
"sequence": 23.0,
"identifier": "Cotton blend",
"unit": {
"identifier": "C62",
"name": {
"raw": "one"
}
},
"normalized": "cotton blend",
"raw": "Cotton blend",
"id": "7000000000000000032"
},
"comparable": true,
"key": "7000000000000000005",
"swatchable": false
}
},
"__meta": {
"modified": "2020-08-04T02:55:52.644Z"
}
}