HCL Commerce Version 9.1.12.0 or later

Modifications de schéma

Dans un index basé sur eSite, chaque magasin eSite dispose de sa propre copie des documents de catalogue, de catégorie, de produit et d'attribut. La plupart des données de ces documents sont identiques. Cela génère une grande quantité de données en double. Dans la conception de schéma pour les index basés sur le magasin de ressources, tous les magasins eSite partagent le même document de catalogue, de catégorie, de produit et d'attribut.

Schémas de magasin

Pour les schémas de magasin, la seule modification est l'ajout d'une valeur asset_store pour chaque magasin eSite qui indique le magasin de ressources de catalogue de ce magasin eSite. Par exemple :
                    "id": {
                        "default": {
                            "contract": "-11005",
                            "language": "-1",
                            "fulfillment": "13001",
                            "catalog": "11501"
                        },
                        "asset_store": 12001,                   

Schémas de catalogue

Dans le modèle d'index eSite, l'ID de magasin dans le nom de l'index de catalogue est l'ID du magasin eSite, par exemple, auth.1.catalog1 est l'ID de magasin du magasin eSite Aurora. Chaque magasin eSite possède son propre index de catalogue. L'ID unique de chaque document de catalogue est storeId-langId-catalogId.
            {
                "_index": ".auth.1.catalog.202302271924",
                "_type": "_doc",
                "_id": "1--1-10502",
                "_score": 1.0,
                "_source": {
                    "identifier": {
                        "catalog": "Extended Sites Catalog Asset Store Consumer Direct",
                        "specification": "catalog",
                        "language": "en_US"
                    },
                    "name": {
                        "normalized": "Aurora consumer direct sample data",
                        "raw": "Aurora consumer direct sample data"
                    },
                    "description": {
                        "raw": "Aurora Consumer Direct sample data"
                    },
                    "id": {
                        "catalog": "10502",
                        "member": "7000000000000001001",
                        "language": "-1",
                        "store": "1"
                    },

Dans modèle d'index CAS, le magasin ID dans le nom de l'index de catalogue est le magasin de ressources de catalogue ID, par exemple, auth.10501.catalog , où 10501 est l'ID de magasin du magasin de ressources de catalogue. Tous les magasins eSite partagent le même index de catalogue. L'ID unique de chaque document de catalogue est catalogId-langId.

Tous les magasins eSite qui dépendent de ce magasin de ressources de catalogue partagent le même document de catalogue pour chaque langue prise en charge. Dans l'exemple suivant, il existe quatre magasins eSite qui dépendent du magasin de ressources de catalogue, pour le même catalogue de vente (10502), et il existe un document pour l'anglais. Le id.store est désormais une liste d'ID de magasin, y compris les ID magasin de ressources catalogue et tous les ID de magasin eSite, qui héritent de ce catalogue : 10501,1,2, 12, 22, comme indiqué dans l'exemple suivant.
            {
                "_index": ".auth.10501.catalog.202302271955",
                "_type": "_doc",
                "_id": "10502--1",
                "_score": 1.0,
                "_source": {
                    "identifier": {
                        "catalog": "Extended Sites Catalog Asset Store Consumer Direct",
                        "specification": "catalog",
                        "language": "en_US"
                    },
                    "name": {
                        "normalized": "Aurora consumer direct sample data",
                        "raw": "Aurora consumer direct sample data"
                    },
                    "description": {
                        "raw": "Aurora Consumer Direct sample data"
                    },
                    "id": {
                        "catalog": "10502",
                        "member": "7000000000000001001",
                        "language": "-1",
                        "store": [
                            "22",
                            "1",
                            "12",
                            "2",
                            "10501",
                            "32"
                        ]
                    },
Pour les documents de filtre de catalogue dans l'index de catalogue, un nouvel attribut appelé magasin est ajouté pour indiquer à quel magasin appartient le filtre.
           {
                "_index": ".auth.10501.catalog.202302271955",
                "_type": "_doc",
                "_id": "10001--1--3050--3050",
                "_score": 1.0,
                "_source": {
                    "id": {
                        "catalog": "10001",
                        "language": "-1",
                        "store": "12"
                    },
                    "filters": [
                        {
                            "identifier": "Demoorg01CatalogFilter",
                            "usage": "",
                            "query": "( +*:* -path.tree:(\"1\" \"6\" \"7\" \"8\" \"9\" \"10\" \"13\" \"15\"))",
                            "id": {
                                "filter": "-3050",
                                "expression": "-3050",
                                "contract": "",
                                "member": ""
                            },
                            "store": "12"
                        }
                    ],

Schéma d'attribut

Dans le modèle d'index eSite, l'ID de magasin dans le nom de l'index d'attribut est l'ID de magasin eSite, par exemple, auth.1.attribute. (1 est l'ID de magasin du magasin AuroraESite). Chaque magasin eSite possède son propre index d'attributs. L'ID unique de chaque document d'attribut est storeId-langId-attributeId. id.store est l'ID du magasin eSite.
           {
                "_index": ".auth.1.attribute.202302271924",
                "_type": "_doc",
                "_id": "1--1-7000000000000000011",
                "_score": 1.0,
                "_source": {
                    "id": {
                        "language": "-1",
                        "attribute": "7000000000000000011",
                        "store": "1"
                    },

Dans le modèle d'index CAS, l'ID de magasin dans le nom de l'index d'attribut est l'ID de magasin de ressources de catalogue, par exemple, auth.10501.attribute (10501 est l'ID de magasin du magasin de ressources de catalogue). Tous les magasins eSite partagent le même index d'attribut. L'ID unique de chaque document d'attribut est attributeId-langId.

id.store est l'ID de magasin propriétaire de l'attribut. Si l'attribut est créé dans un magasin de ressources de catalogue, id.store est 10501 (ID de magasin de ressources de catalogue). Si l'attribut est créé dans un magasin AuroraESite (1), l'id.store est 1, comme illustré dans l'exemple suivant.
           {
                "_index": ".auth.10501.attribute.202302271955",
                "_type": "_doc",
                "_id": "7000000000000000011--1",
                "_score": 1.0,
                "_source": {
                    "id": {
                        "language": "-1",
                        "attribute": "7000000000000000011",
                        "store": "10501"
                    },
Si la valeur d'attribut est créée dans un magasin eSite (ID de magasin AuroraESite 1), les valeurs "store” : ”1” sont utilisées pour indiquer qu'il s'agit d'une valeur d'attribut local.

Schémas de page (remplacement du schéma d'URL)

L'index URL a été remplacé par le nouvel index Page.

L'index URL d'origine inclut toutes les catégories et tous les produits. Par conséquent, sa taille est importante et les informations qu'il contient sont largement redondantes, car les URL de référencement de catégories et de produits ont déjà été indexées dans l'index Catégorie et l'index Produit. En outre, l'index URL ne prend pas en charge plusieurs langues (il n'y a pas d'ID de langue dans l'ID du document d'URL).

Dans le modèle d'index CAS, un index Page remplace l'index URL dans le modèle d'index eSite. L'index Page indexe uniquement les pages d'URL définies dans la table de base de données SEOPAGEDEF. Le nombre de documents dans l'index Page est beaucoup moins important que dans l'index URL. Le document Page contient uniquement un élément de modèle, il ne contient pas d'élément Page. L'élément Page est généré en fonction du modèle lors de l'exécution.

Dans le modèle d'index eSite, le ID de document est storeId-url.id. url.id est l'ID unique dans la table SEOURLKEYWORD.
            {
                "_index": ".auth.1.url.202302271924",
                "_type": "_doc",
                "_id": "1-21059",
                "_score": 1.0,
                "_source": {
                    "template": {
                        "name": "PRODUCT_PAGE",
                        "type": "ItemPage",
                        "title": "<seo: ProductName/> | <seo: StoreName/>",
                        "meta": {
                            "image": "Image for <seo: ProductName/> from <seo: StoreName/>",
                            "description": "<seo: ProductShortDescription/>",
                            "keyword": "<seo: ProductKeyword/> <seo: ProductManufacturerName/>"
                        }
                    },
                    "identifier": {
                        "specification": "url",
                        "language": "en_US",
                        "url": "hermitage-tweed-bomber-mcl009-092005"
                    },
                    "id": {
                        "catalog": "10001",
                        "language": "-1",
                        "store": "1",
                        "url": "21059"
                    },
Dans le modèle d'index CAS, l'ID de document est storeId-page.id. page.id est l'ID unique de la table SEOURLKEYWORD.
           {
                "_index": ".auth.10501.page.202302271955",
                "_type": "_doc",
                "_id": "10002--1",
                "_score": 1.0,
                "_source": {
                    "template": {
                        "meta": {
                            "image": "Image for <seo: ProductName/> from <seo: StoreName/>",
                            "description": "<seo: ProductShortDescription/>",
                            "keyword": "<seo: ProductKeyword/> <seo: ProductManufacturerName/>"
                        },
                        "name": "PRODUCT_PAGE",
                        "title": "<seo: ProductName/> | <seo: StoreName/>"
                    },
                    "identifier": {
                        "language": "en_US"
                    },
                    "id": {
                        "language": "-1",
                        "store": "10501"
                    },

Schémas de catégorie

Modification de l'ID de document

Dans modèle d'index eSite, l'ID de document des documents de catégorie est storeId-langId-catalogId, comme dans l'exemple suivant :
          {
                "_index": ".auth.1.category.202302271924",
                "_type": "_doc",
                "_id": "1--1-10001-12",
Dans le modèle d'index CAS, l'ID de document des documents de catégorie est catalogId-categoryId-langId, comme illustré ci-dessous.
            {
                "_index": ".auth.10501.category.202302271955",
                "_type": "_doc",
                "_id": "10501-12--1",
 

id.store Modifier

Dans le modèle d'index eSite, chaque magasin eSite possède sa propre copie du document de catégorie. La valeur id.store était l'ID de magasin eSite (identique à l'ID de magasin dans l'ID unique du document)

Dans le modèle d'index CAS, tous les magasins eSite partagent le même document de catégorie. Dans le modèle CAS, il est remplacé par l'ID de magasin propriétaire de la catégorie.

Si cette catégorie est créée dans un magasin de ressources de catalogue et partagée par tous ses magasins eSite, l'id.store doit être l'ID de magasin de ressources de catalogue. Par exemple, si la catégorie Fasteners 12 est une catégorie d'un magasin de ressources de catalogue, l'ID id.store doit être l'ID de magasin de ressources de catalogue (10501).

Si la catégorie est créée dans un magasin eSite et n'est visible que dans ce magasin eSite, id.store est l'ID de magasin eSite. La capture d'écran suivante le montre pour le modèle eSite.

                    "id": {
                        "catalog": "10001",
                        "member": "7000000000000001001",
                        "catgroup": "12",
                        "language": "-1",
                        "store": "1"
                    },
En revanche, le modèle CAS se présente comme suit.
                    "id": {
                        "catalog": "10501",
                        "member": "7000000000000001001",
                        "catgroup": "12",
                        "language": "-1",
                        "store": "10501"
                    },
 

Changement d'URL de référencement

Pour l'URL de référencement de catégorie et le remplacement, url.assetStoreId.seo est l'URL de référencement de cette catégorie dans le magasin de ressources de catalogue. Par exemple, une URL de référencement peut être url.10501.seo.

Si un eSite a substitué une URL de référencement, cette URL est ajoutée en tant que url.eSiteStoreId.seo. Par exemple, url.1.so.

Les anciens référencements sont définis dans la matrice old_seos. Par exemple, url.1.old_seos.

Dans le modèle eSite, les URL de référencement ressemblaient à ce qui suit :
                    "url": {
                        "image": "images/catalog/hardware/fasteners/category/catr_hw_fasteners.png",
                        "thumbnail": "images/catalog/hardware/fasteners/category/catr_hw_fasteners.png",
                        "seo": "/fasteners"
                    },
Dans le modèle CAS, elles apparaissent comme suit.
                    "url": {
                        "10501": {
                            "image": "images/catalog/hardware/fasteners/category/catr_hw_fasteners.png",
                            "thumbnail": "images/catalog/hardware/fasteners/category/catr_hw_fasteners.png",
                            "seo": "/fasteners"
                        },
                        "2": {
                            "old_seos": [
                                "/fasteners"
                            ],
                            "seo": "/fasteners-aurorab2b"
                        }
                    },

Modifier la facette

Dans Management Center, les attributs affichables et la séquence d'une facette peuvent être remplacées au niveau de l'eSite. Dans le modèle d'index Magasin eSite, les variables affichables et de séquence ont une valeur unique pour cet eSite.
                    "facet": [
                        {
                            "sequence": 1.1,
                            "search": true,
                            "display": {
                                "zero": false,
                                "limit": 20,
                                "multiple": true,
                                "order": 1
                            },
                            "displayable": false,

Dans le modèle d'index Magasin de ressources, les variables affichables et de séquence répertorient des valeurs pour tous les magasins eSite.

Dans l'exemple suivant, la facette Boys Pants’s Material n'est pas affichable pour les clients et la séquence est 1.1 dans le magasin AuroraESite.

Dans l'index, la valeur de la facette pour le magasin AuroraESite (1) est false (“1”: false) et la séquence est 1.1 (“1”: 1.1) :
                        {
                            "sequence": {
                                "22": 0.0,
                                "1": 1.1,
                                "12": 0.0,
                                "2": 0.0,
                                "32": 0.0
                            },
                            "search": true,
                            "display": {
                                "zero": false,
                                "limit": -1,
                                "multiple": false,
                                "order": 0
                            },
                            "displayable": {
                                "22": true,
                                "1": false,
                                "12": true,
                                "2": true,
                                "32": true
                            },
                            "id": "3074457345618268605",
                            "attribute": {
                                "identifier": "Material",
                                "name": "Material",
                                "ribbon": false,
                                "id": "7000000000000000009",
                                "swatchable": false
                            },

Schéma de produit

Dans le modèle d'actif de catalogue, l'ID unique est passé de storeId-langId-masterCatalogId-catentryId à catentryId-langId. L'exemple ci-après illustre le modèle eSite.
            {
                "_index": ".auth.1.product.202302271924",
                "_type": "_doc",
                "_id": "1--1-10001-10001",
Le schéma correspondant pour le modèle de magasin de ressources de catalogue est :
            {
                "_index": ".auth.10501.product.202302271955",
                "_type": "_doc",
                "_id": "10001--1",
Dans le modèle eSite, chaque magasin eSite dispose de sa propre copie du document de produit. Le remplacement de nom de niveau eSite est indexé sous "remplacer" :
                    "name": {
                        "text_en_US": "Hermitage Fit and Flare Dress",
                        "normalized": "hermitage fit and flare dress",
                        "raw": "Hermitage Fit and Flare Dress",
                        "text": "Hermitage Fit and Flare Dress",
                        "override": {
                            "text_en_US": "Hermitage Fit and Flare Dress - auroraesite",
                            "normalized": "hermitage fit and flare dress - auroraesite",
                            "raw": "Hermitage Fit and Flare Dress - auroraesite",
                            "text": "Hermitage Fit and Flare Dress - auroraesite"
                        }
                    },

Dans le modèle CAS, tous les magasins eSite partagent le même document de produit. Le nom, la description et le mot clé de niveau Magasin de ressources sont définis sous l'ID de magasin de ressources, par exemple, name.10501.text.

Les remplacements eSite tels que le nom, la description, le mot clé ou les URL (miniature et image) sont ajoutés sous l'ID de magasin eSite, par exemple name.1.text.
                    "name": {
                        "10501": {
                            "text_en_US": "Hermitage Fit and Flare Dress",
                            "normalized": "hermitage fit and flare dress",
                            "raw": "Hermitage Fit and Flare Dress",
                            "text": "Hermitage Fit and Flare Dress"
                        },
                        "1": {
                            "text_en_US": "Hermitage Fit and Flare Dress - auroraesite",
                            "normalized": "hermitage fit and flare dress - auroraesite",
                            "raw": "Hermitage Fit and Flare Dress - auroraesite",
                            "text": "Hermitage Fit and Flare Dress - auroraesite"
                        }
                    },

Pour le remplacement d'URL de référencement, url.assetStoreId.seo est l'URL de référencement définie dans le magasin de ressources de catalogue, et l'URL de référencement remplacé est ajouté en tant que url.eSiteStoreId.seo. La zone old_seos sous url contient la valeur des anciennes URL de référencement.

L'exemple suivant montre comment cela est configuré dans le modèle eSite.
                    "url": {
                        "image": "images/catalog/apparel/women/wcl000_dresses/646x1000/wcl000_0028_a_red.jpg",
                        "thumbnail": "images/catalog/apparel/women/wcl000_dresses/200x310/wcl000_0028_a_red.jpg",
                        "seo": "/hermitage-fit-and-flare-dress-auroaesite",
                        "override": {}
                    },
Dans le modèle CAS, il est configuré comme suit.
                    "url": {
                        "10501": {
                            "image": "images/catalog/apparel/women/wcl000_dresses/646x1000/wcl000_0028_a_red.jpg",
                            "thumbnail": "images/catalog/apparel/women/wcl000_dresses/200x310/wcl000_0028_a_red.jpg",
                            "seo": "/hermitage-fit-and-flare-dress"
                        },
                        "1": {
                            "old_seos": [
                                "/hermitage-fit-and-flare-dress"
                            ],
                            "seo": "/hermitage-fit-and-flare-dress-auroaesite"
                        }
                    },

Le prix de vente du produit est codé en tant que prices.offer. Le prix de vente de remplacement d'eSite est ajouté en tant que prices.ContractId.offer, où ContractId est le ContractId par défaut du magasin eSite. Voici des exemples pour les modèles eSite et CAS.

Dans le modèle eSite :
                    "prices": {
                        "offer": {
                            "usd": 90.0
                        },
                        "list": {
                            "usd": 250.0
                        },
                        "10005": {
                            "usd": 90.0
                        }
                    },
Dans le modèle CAS, 10005 est le contrat par défaut du magasinAuroraESite, dans lequel le prix de vente est remplace par 90 :
                    "prices": {
                        "offer": {
                            "usd": 100.0
                        },
                        "-31009": {
                            "usd": 100.0
                        },
                        "10009": {
                            "usd": 100.0
                        },
                        "list": {
                            "usd": 250.0
                        },
                        "-21009": {
                            "usd": 100.0
                        },
                        "10005": {
                            "usd": 90.0
                        },
                        "-11009": {
                            "usd": 100.0
                        }
                    },

Pour les magasins eSite qui n'ont pas de prix de vente de remplacement, les entrées de prix sont toujours créées avec le contrat par défaut de cet eSite comme clé, et le prix avec le prix de vente du magasin de ressources. Tous les magasins eSite auront un prix en vertu de leur contrat par défaut, même en l'absence de prix de remplacement. Dans ce cas, il utilisera le prix de vente hérité du magasin de ressources.

Pour le stock, dans le modèle d'index eSite, il n'y a qu'un seul stock sous total :
                    "inventories": {
                        "total": {
                            "quantity": 72813.0
                        },
                        "11504": {
                            "quantity": 1300.0
                        },
                        "11503": {
                            "quantity": 1300.0
                        },
                        "11547": {
                            "quantity": 1300.0
                        },
                        "11506": {
                            "quantity": 1300.0
                        },
                        "11549": {
                            "quantity": 1300.0
                        },
Dans le modèle d'index CAS, le stock par magasin est répertorié sous chaque ID de magasin eSite (total/esiteId) :
                    "inventories": {
                        "total": {
                            "22": {
                                "quantity": 72813.0
                            },
                            "1": {
                                "quantity": 72813.0
                            },
                            "12": {
                                "quantity": 72813.0
                            },
                            "2": {
                                "quantity": 72813.0
                            },
                            "32": {
                                "quantity": 72813.0
                            }
                        },

Schéma de description

Dans le modèle d'index eSite, pour une description détaillée du produit, l'ID de document de description est storeId-languageId-catalogId-catentryId. La description de remplacement eSite est indexée sous "override" :
            {
                "_index": ".auth.1.description.202302271924",
                "_type": "_doc",
                "_id": "1--1-10001-10001",
                "_score": 1.0,
                "_source": {
                    "description": {
                        "raw": "Classically tailored, this elegant satin dress features a bateau neckline, soft pleating, and a clasped belt to define the waist.",
                        "override": {
                            "raw": "<p>Classically tailored, this elegant satin dress features a bateau neckline, soft pleating, and a clasped belt to define the waist - auroaesite.</p>"
                        }
                    },
                    "id": {
                        "catalog": "10001",
                        "language": "-1",
                        "store": "1",
                        "object": "10001"
                    },

Dans le modèle d'index CAS, l'ID de document a changé en product-productId-languageId. "product" est ajouté dans l'ID de document pour éviter les conflits.

Tous les magasins eSite partagent le même document Description. Les longues descriptions de niveau magasin de ressources sont définies sous l'ID du magasin de ressources. Par exemple, description.10501.raw. En outre, les longues descriptions de remplacement des magasins eSite sont répertoriées sous leur ID de magasin eSite correspondant.
            {
                "_index": ".auth.10501.description.202302271955",
                "_type": "_doc",
                "_id": "product-10001--1",
                "_score": 1.0,
                "_source": {
                    "description": {
                        "10501": {
                            "raw": "Classically tailored, this elegant satin dress features a bateau neckline, soft pleating, and a clasped belt to define the waist."
                        },
                        "1": {
                            "raw": "<p>Classically tailored, this elegant satin dress features a bateau neckline, soft pleating, and a clasped belt to define the waist - auroaesite</p>"
                        }
                    },
                    "id": {
                        "language": "-1",
                        "store": "10501",
                        "object": "10001"
                    },
Pour la longue description de catégorie, dans le modèle d'index eSite, l'ID Document est storeId-languageId-catalogId-categoryId.
                "_index": ".auth.1.description.202302271924",
                "_type": "_doc",
                "_id": "1--1-10001-10001",
                "_score": 1.0,
                "_source": {
                    "description": {
                        "raw": "<p>Dress long description.</p>",
                     },
                    "id": {
                        "catalog": "10001",
                        "language": "-1",
                        "store": "1",
                        "object": "10001"
                    },
Pour la longue description de catégorie, dans le modèle d'index CAS, l'ID de document est category-categoryId-languageId. "category" est ajouté dans l'ID de document pour éviter les conflits. Etant donné que la longue description de category ne prend pas en charge le remplacement eSite, elle est indexée sous l'ID de magasin de ressources (10501) :
                            {
                "_index": ".auth.10501.description.202302271955",
                "_type": "_doc",
                "_id": "category-10001--1",
                "_score": 1.0,
                "_source": {
                    "description": {
                        "10501": {
                            "raw": "<p>Dress long description</p>"
                        }
                    },
                    "id": {
                        "language": "-1",
                        "store": "10501",
                        "object": "10001"
                    },

Schéma de stock

Les modèles d'index eSite et CAS partagent le même index de stock (par exemple, auth.inventory).

Dans le modèle d'index eSite, l'ID de document est storeId-catalogId-catentryId.
            {
                "_index": "auth.inventory",
                "_type": "_doc",
                "_id": "1-10001-10040",
                "_score": 1.0,
                "_source": {
                    "inventories": {
                        "11504": {
                            "quantity": 100.0,
                            "id": "11504"
                        },
                        "11548": {
                            "quantity": 100.0,
                            "id": "11548"
                        },
                        "11503": {
                            "quantity": 100.0,
                            "id": "11503"
                        },

Dans le modèle d'index CAS, l'ID de document est modifié en storeId-catentryId.

Le stock total par magasin eSite est ajouté sous total/storeId.

Schéma de prix

Il n'y a pas de modification entre le modèle eSite et le modèle CAS, car le schéma de prix n'est pas répertorié par magasin.

Schéma d'espace de travail

Il n'y a aucune modification entre le modèle eSite et le modèle CAS, car le schéma d'espace de travail n'est pas répertorié par magasin.