HCL Commerce Version 9.1.12.0

Personnalisation des connecteurs CAS par défaut avec des profils Ingest

Dans cette leçon, vous allez apprendre à extraire une colonne supplémentaire de la base de données et à la rendre disponible en tant que zone supplémentaire dans la réponse de recherche.

Before you begin

  • Assurez-vous de l'avoir téléchargé et extrait HCL_Commerce_Search_Bundle_9.1.x.0.zip depuis le portail HCL License and Delivery. Le fichier zip extrait contiendra les données du tutoriel à l'emplacement de dossier suivant : \dependencies\nifi\Tutorials.
  • Extrayez commerce-custom-search-marketplace-seller.zip dans un répertoire temporaire de votre environnement de développement, qui doit être configuré dans le kit d'outils NiFi en suivant la procédure décrite ci-dessous. Ce fichier inclut l'exemple de code Java et des tests Junit que vous utilisez dans ce tutoriel.

Procedure

  1. Créez un processeur NiFi personnalisé en étendant le processeur Ingest par défaut dans le kit d'outils NiFi.

    Pour configurer l'environnement du kit d'outils avec l'exemple de code source fourni commerce-custom-search-marketplace-seller.zip dans le même espace de travail que commerce-custom-search-bundles-9.1.x.0, comme expliqué dans le prérequis, suivez les étapes mentionnées ci-dessous. Et pour plus d'informations sur commerce-custom-search-bundles-9.1.x.0, voir Tutoriel : Personnalisation des connecteurs par défaut avec le profil Ingest.

    Note: Vous pouvez utiliser n'importe quelle distribution Eclipse incluant le plug-in Maven (Maven version 3.8.4 ou ultérieure).
    1. Extrayez commerce-custom-search-marketplace-seller.zip dans un répertoire de travail, commerce-custom-search-marketplace-seller, qui contient un projet Maven avec un fichier pom.xml à l'intérieur.
    2. Copiez les fichiers JAR suivants obtenus à partir du conteneur NiFi dans le répertoire du projet commerce-custom-search-marketplace-seller/libs qui a été extrait du projet commerce-custom-search-marketplace-seller.zip. Pour plus d'informations, reportez-vous aux étapes 3 à 6 des processeurs NiFi personnalisés.

      Exemple issu de la version 9.1.x.0 :

      1. commerce-search-processors-9.1.x.0.jar
      2. hcl-cache-core-9.1.x.0-20221201.221643-25.jar
      3. cf-base-9.1.x.0-20221123.064414-9.jar

      Ingest-api.jar, qui a été inclus dans le modèle de projet commerce-custom-search-marketplace-seller.zip, est déjà présent dans ce dossier.

    3. Mettez à jour le fichier pom.xml dans le répertoire racine du projet commerce-custom-search-marketplace-seller et modifiez les références de nom de fichier avec les noms des fichiers JAR.
      Exemple issu de la version 9.1.x.0 :
      <dependency> <groupId>com.hcl.commerce</groupId> <artifactId>dummy-commerce-search-processors</artifactId> <version>9.1.x.0</version> <scope>system</scope> <systemPath>${project.basedir}/libs/commerce-search-processors-9.1.x.0.jar</systemPath> </dependency> <dependency> <groupId>com.hcl.commerce</groupId> <artifactId>dummy-hcl-cache-core</artifactId> <version>9.1.x.0</version> <scope>system</scope> <systemPath>${project.basedir}/libs/ hcl-cache-core-9.1.x.0-20221201.221643-25.jar</systemPath> </dependency> <dependency> <groupId>com.ibm.commerce.cf</groupId> <artifactId>dummy-cf-base</artifactId> <version>9.1.x.0</version> <scope>system</scope> <systemPath>${project.basedir}/libs/cf-base-9.1.x.0-20221123.064414-9.jar</systemPath> </dependency> 
    4. Importez le projet extrait en tant que projet Maven dans Eclipse (Fichier > Importer > Maven > Projets Maven existants) et sélectionnez le répertoire racine commerce-custom-search-marketplace-seller. Cliquez sur Terminer. Attendez que le téléchargement des dépendances soit terminé.

    Ce projet comporte un exemple de classe de fournisseur d'expression personnalisée ChangeSQL qui implémente l'interface IngestExpressionProvider. La classe ChangeSQL étend la SQL pour inclure une colonne DESCRIPTION de la table MPSELLERDESC pour l'étape DatabaseCASProductStage1a. Elle inclut également une colonne PARTNUMBER de la table CATENTRY pour l'étape DatabaseCASProductStage1h. Vous pouvez utiliser cet exemple de référence pour apprendre à modifier le SQL utilisé dans les phases d'extraction, de transformation et de chargement (ETL) par défaut.

    ComposeDatabaseSQLTest est le test JUnit qui peut être utilisé pour vérifier la logique de code dans ChangeSQL.

    ChangeDocument est une extension post-processeur de profil Ingest qui montre comment effectuer d'autres manipulations de données après la transformation par défaut, dans deux des phases Ingest liées au produit.

    CreateProductDocumentFromDatabaseTest et FindChildItemsByAssetStoreFromDatabaseTest sont les tests JUnit qui peuvent être utilisés pour vérifier la logique de code de ChangeDocument.

    Dans cette classe, si la phase en cours est DatabaseCASProductStage1a, elle ajoute une zone supplémentaire seller_description avec la valeur de la colonne DESCRIPTION de la table "MPSELLERDESC" dans le document à indexer dans Elasticsearch.

    Si la phase en cours est DatabaseCASProductStage1h, elle ajoute une zone supplémentaire parent_partnumber avec la valeur de la colonne PARTNUMBER de la table CATENTRY dans le document à indexer dans Elasticsearch.

    Une fois terminé, votre espace de travail contient deux projets. Le premier projet est commerce-custom-search-bundles, à partir du kit d'outils NiFi, et le second est le projet commerce-custom-search-marketplace-seller importé.

  2. Testez la logique Ingest personnalisée dans le kit d'outils NiFi et générez un fichier JAR déployable.

    Pour exécuter le test JUnit, cliquez avec le bouton droit de la souris sur la classe de test JUnit choisie et choisissez Exécuter en tant que... ou Déboguer en tant que... > Test JUnit.

    Exécutez également un test unitaire pour FindChildItemsByAssetStoreFromDatabaseTest.

    1. Mettez à jour les projets en faisant un clic droit sur le projet et en sélectionnant Maven > Mettre à jour le projet.
    2. Sélectionnez commerce-custom-search-processors > commerce-custom-search-marketplace-seller > Force Update of Snapshots/Releases et cliquez sur le bouton OK. Régénérez les fichiers binaires pour le projet commerce-custom-search-bundles-9.1.x.0.

      Note:
      • Le projet de personnalisation commerce-custom-search-marketplace-seller n'a pas de dépendances sur le projet commerce-custom-search-bundles-9.1.x.x , mais il est recommandé de générer le projet commerce-custom-search-bundles-9.1.x.x avant de procéder à des personnalisations. Cela peut être utile pour d'autres personnalisations qui peuvent avoir des dépendances sur commerce-custom-search-bundles-9.1.x.x pour d'autres cas d'utilisation.
      • En cas de dépendances manquantes pour les fichiers JAR dummy-commerce-search-processors, dummy-hcl-cache-core ou dummy-cf-base, voir Dépannage : dépendances manquantes dans le processeur NiFi personnalisé.

      Générez les fichiers binaires pour le projet commerce-custom-search-marketplace-seller :

      Dans l'explorateur de projets, cliquez avec le bouton droit de la souris sur le projet commerce-custom-search-marketplace-seller-- > Exécuter en tant que > Génération Maven... (Notez qu'il existe deux éléments de menu : Génération Maven et Génération Maven.... Sélectionnez Génération Maven... ) La fenêtre Modifier la configuration s'ouvre.

      Entrez la commande clean install -U -Denforcer.skip=true dans la zone de texte Objectifs et cliquez sur le bouton Exécuter.

      Une fois la génération terminée, le fichier JAR sera disponible dans le répertoire cible de ce projet, par exemple : commerce-custom-search-marketplace-seller-9.1.x.0.jar. Pour plus d'informations, voir Processeurs NiFi personnalisés.

  3. Déployez votre logique Ingest personnalisée sur le serveur Elasticsearch dans l'environnement de développement Commerce.

    Dans cette étape, vous étendez le connecteur par défaut en déployant la logique personnalisée dans le conteneur NiFi sur la plateforme de données, puis vous créez un profil Ingest personnalisé pour le lier au canal de connecteur par défaut.

    Déployez le fichier JAR commerce-custom-search-marketplace-seller-9.1.10.0.jar personnalisé dans le conteneur NiFi sur la plateforme de données Elasticsearch pour l'environnement de développement Commerce.
    1. Copiez commerce-custom-search-marketplace-seller-9.1.x.0.jar depuis le répertoire cible sous le projet commerce-custom-search-marketplace-seller dans le kit d'outils NiFi depuis le répertoire libs du projet commerce-custom-search-marketplace-seller vers le répertoire libs du conteneur NiFi sur le serveur de données Elasticsearch.
      docker cp "/root/commerce-custom-search-marketplace-seller-9.1.10.0.jar" <NIFI_CONTAINER_ID>:/opt/nifi/nifi-current/lib 
      Note: (Facultatif) Ce tutoriel de personnalisation est indépendant du projet commerce-custom-search-processors-nar. Toutefois, si votre personnalisation dépend du projet commerce-custom-search-processors-nar, transférez le fichier NAR du répertoire cible du projet commerce-custom-search-processors-nar vers le répertoire d'extension désigné sur le serveur Elasticsearch et montez ce fichier en tant que volume dans le conteneur Docker NiFi.

      Ignorez les fichiers NAR générés dans d'autres projets que commerce-custom-search-processors-nar. Pour en savoir plus, voir Génération et déploiement d'un fichier NAR personnalisé

      ou, par exemple, vous pouvez utiliser la commande suivante pour monter le fichier NAR qui a été ajouté au dossier /extensions, au lieu de monter le dossier de volume :HCL Commerce Version 9.1.9.0 or later
      docker run -it -p 30600:30600 --name elasticsearch_nifi_1 -v /{docker-compose dir}/volumes/nifi-ext/commerce-custom-search-processors-nar-9.1.x.x:/opt/nifi/nifi-current/extensions/commerce-custom-search-processors-nar-9.1.x.x search-nifi-app:v9-latest 

      elasticsearch_nifi_1 est le conteneur NiFi du serveur Elasticsearch et search-nifi-app:v9-latest est l'image NiFi.

    2. Redémarrez le conteneur NiFi.
  4. Déployez les extensions personnalisées du profil Ingest sur l'environnement d'exécution de production.
    1. Créez une image Docker search-nifi-app personnalisée.
      Pour le déploiement d'exécution des extensions de personnalisation Ingest, créez une image Docker personnalisée pour search-nifi-app afin d'inclure les personnalisations créées à l'aide du kit d'outils NiFi.
      1. Créez une configuration Dockerfile avec le contenu suivant :
        FROM search-nifi-app docker image COPY CusDeploy/ /opt/nifi/nifi-current/lib

        CusDeploy/ contient le commerce-custom-search-marketplace-seller-9.1.x.0.jar que vous avez généré à l'étape 2.

      2. HCL Commerce Version 9.1.10.0 or laterSi le correctif suivant est appliqué :
        COPY patches/ /opt/nifi/nifi-current/patches FROM comlnx94.prod.hclpnp.com/9.1.x.0/search-nifi-app:v9-20220322-1524 WORKDIR /opt/nifi/scripts RUN ./patch.sh COPY CusDeploy/ /opt/nifi/nifi-current/lib

        Où le répertoire patches/ contient le correctif (jar) à appliquer dans la version 9.1.10.0 et CusDeploy/ contient le fichier commerce-custom-search-marketplace-seller-9.1.x.0.jar généré à l'Etape 2 .

      3. HCL Commerce Version 9.1.11.0 or later
        FROM comlnx94.prod.hclpnp.com/9.1.x.0/search-nifi-app:v9-20220322-1524 COPY CusDeploy/ /opt/nifi/nifi-current/lib

        CusDeploy/ pour contenir commerce-custom-search-marketplace-seller-9.1.x.0.jar intégré à l'étape 2.

      4. Préparez les fichiers de déploiement personnalisés.
        • Créez le sous-répertoire CusDeploy dans le même répertoire que le Dockerfile créé à l'étape 1.
        • Copiez le commerce-custom-search-marketplace-seller-9.1.x.x.jar dans le répertoire CusDeploy.
      5. Générez l'image Docker (search-nifi-app) du serveur WiFi personnalisée.
        • Ouvrez une invite de commande et accédez au répertoire contenant votre Dockerfile et son sous-répertoire CusDeploy.
        • Exécutez la commande docker build pour générer une image Docker personnalisée pour le serveur NiFi (search-nifi-app) docker build -t search-nifi-app:<tag> . Par exemple :
          docker build -t search-nifi-app:nifi-extension .
          Note:
          • Assurez-vous que la période est présente à la fin de votre commande docker build.
          • Comme le libellé de création du package de déploiement, la balise est utilisée pour identifier l'image Docker personnalisée. Vous pouvez modifier cette image à tout moment pour vous aider à identifier l'image Docker générée.
    2. Déployez le serveur de données Elasticsearch d'exécution via CI/CD à l'aide d'une image Docker personnalisée créée à l'étape 1.
      Cette tâche couvre les exigences minimales pour un déploiement basé sur Docker Compose.
      • Configurez un environnement de production HCL Commerce avec la méthode de déploiement Docker Compose. Pour plus d'informations sur la configuration de cet environnement, voir Déploiement d'HCL Commerce version 9.1 avec Docker Compose (pour une utilisation hors production).
      • (Facultatif) Pour votre image Docker de serveur NiFi personnalisée (search-nifi-app), assurez-vous que les paramètres de déploiement suivants sont correctement définis à la section environnement de votre fichier de configuration docker-compose.
      Si votre personnalisation dépend du projet commerce-custom-search-processors-nar, transférez le fichier NAR du répertoire cible du projet commerce-custom-search-processors-nar vers le répertoire d'extension désigné sur le serveur Elasticsearch et montez ce fichier en tant que volume dans le conteneur Docker NiFi. Pour des instructions détaillées, voir la rubrique Génération et déploiement d'un fichier NAR personnalisé.
      volumes: - ./volumes/hcl-cache-local-redis/cache_cfg-ext.yaml:/SETUP/hcl-cache/cache_cfg-ext.yaml - ./volumes/hcl-cache-local-redis/redis_cfg.yaml:/SETUP/hcl-cache/redis_cfg.yaml - ./volumes/nifi-ext/commerce-custom-search-processors-nar-9.1.x.0.nar:/opt/nifi/nifi-current/extensions/commerce-custom-search-processors-nar-9.1.x.0.nar 
      Les étapes suivantes doivent être effectuées dans l'environnement d'exécution de la même manière que dans l'environnement de développement :
      • Créez un profil Ingest et associez-le à un connecteur par défaut ( étape 5.
      • Remplacez le profil de requête de recherche par défaut pour inclure l'attribut seller_description supplémentaire dans la réponse de requête. (Etape Etape 6).
      • Vérifiez que la réponse du profil de recherche contient l'attribut supplémentaire seller_description (étape 7).
  5. Créez un profil Ingest personnalisé et associez-le à l'étape de création (DatabaseCASProductStage1a) et à l'étape de mise à jour (DatabaseCASProductStage1h).

    L'étape de création est la première étape pour le produit, la catégorie ou l'attribut, par exemple auth.reindex.cas - Product Stage 1a (Document principal).

    L'étape de mise à jour se compose du reste des étapes, par exemple, auth.reindex.cas - Product Stage 1c (Rechercher des URL de référencement), auth.reindex.cas - Product Stage 1h (Rechercher des articles enfant) et le reste.

    L'étape de mise à jour et l'étape de création utilisent différentes conceptions de flux, de sorte que la méthode d'ajout d'un profil Ingest personnalisé est légèrement différente. La procédure d'ajout d'un profil Ingest personnalisé à l'étape de mise à jour est décrite après cette étape.

    1. A l'aide d'un client REST, émettez la commande POST suivante pour créer un profil Ingest MyCustomIngestProfile.
      POST http://<QUERY_HOST>:<QUERY_PORT>/search/resources/api/v2/documents/profiles/MyCustomIngestProfile?profileType=Ingest
      Vous trouverez ci-dessous le corps de la requête. Notez qu'il obtient les noms de classe complets du fournisseur personnalisé et du post-processeur que vous avez créés précédemment dans le projet commerce-custom-search-marketplace-seller-9.1.x.x.
      { "profileName": "MyCustomIngestProfile", "provider": [ "com.mycompany.data.ingest.product.providers.ChangeSQL" ], "preprocessor": [], "postprocessor": [ "com.mycompany.data.ingest.product.processors.ChangeDocument" ] } 
      Voici la réponse attendue :
      { "Profile created with name": "MyCustomIngestProfile" }
    2. Redémarrez le conteneur query-app.
    3. Associez le profil Ingest personnalisé au canal de connecteur. Procédez comme suit. Pour obtenir des instructions sur l'utilisation d'un nœud final Ingest pour mettre à jour la liaison de profil Ingest en tant que variable vers un canal de connecteur, voir Mise à jour du groupe de processus NiFi, du processeur, du service de contrôleur à l'aide du descripteur de connecteur Ingest.
      • Ouvrez votre interface utilisateur NiFi et accédez à Flux NiFi > auth.reindex.cas - Product Stage 1a (Document principal) > Créer un document de produit > SCROLL SQL.
      • Cliquez avec le bouton droit de la souris sur la zone de conception vide et cliquez sur Variables.

      • Créez une variable avec le nom ingest.profile.name et la valeur MyCustomIngestProfile. Cliquez sur le bouton Appliquer.

  6. Ajoutez le profil Ingest personnalisé à Etape de mise à jour (DatabaseCASProductStage1h).
    1. A l'aide d'un client REST, émettez la commande POST suivante pour créer un profil DatabaseCASProductStage1h ingest.
      POST: http://QUERY_HOST:QUERY_PORT/search/resources/api/v2/documents/profiles/DatabaseCASProductStage1h?profileType=Ingest
      Vous trouverez ci-dessous le corps de la requête. Notez qu'il obtient les noms de classe complets du fournisseur personnalisé et du post-processeur que vous avez créés précédemment dans le projet commerce-custom-search-marketplace-seller-9.1.x.x.
      { "profileName": "DatabaseCASProductStage1h", "provider": [ "com.mycompany.data.ingest.product.providers.ChangeSQL" ], "postprocessor": [ "com.mycompany.data.ingest.product.processors.ChangeDocument" ] } 
      Voici la réponse attendue :
      { "Profile created with name":"DatabaseCASProductStage1h" } 
    2. Redémarrez le conteneur NiFi.
    3. Ouvrez votre interface utilisateur NiFi et accédez à Flux NiFi > auth.reindex.cas - Product Stage 1h (Rechercher des articles enfant) > Rechercher des articles enfant > Rechercher des articles enfant dans la base de données.
    4. Cliquez avec le bouton droit de la souris sur la zone de conception vide. Sélectionnez Variables dans le menu contextuel.
    5. Créez une variable avec le nom ingest.profile.name et la valeur DatabaseCASProductStage1h. Cliquez sur le bouton Appliquer.
      1. Déclenchez un index complet pour storeId=12001. Cela peut être fait à l'aide du nœud final Ingest suivant.
        POST http://INGEST_HOST:INGEST_PORT/connectors/auth.reindex/run?storeId=12001
      2. Vérifiez l'achèvement de l'index à l'aide du runid obtenu dans la réponse de l'index de génération, comme dans l'exemple suivant :
        GET http://INGEST_HOST:INGEST_PORT/connectors/auth.reindex/runs/runid/status 
      3. Une fois l'indexation terminée, interrogez l'index du produit (par exemple catentry id 14501) pour vérifier que la propriété parent_partnumber est indexée.
  7. L'attribut seller_description.raw est également indexé par l'index de génération et peut également être validé à partir de la console NiFi.
    1. Accédez à Flux NiFi > auth.reindex.cas - Product Stage 1a (Document principal) > Créer un document produit > Créer un document produit à partir de la base de données. Cliquez avec le bouton droit de la souris sur Transformer un document > Créer un produit à partir de la base de données > Afficher la provenance des données.

    2. Cliquez sur l'icône Afficher les détails pour CONTENT_MODIFIED sous la colonne Type.
    3. Sélectionnez l'onglet Contenu dans la boîte de dialogue Evénement de provenance et cliquez sur le bouton Afficher.
    4. Une fois l'indexation terminée, interrogez l'index du produit (par exemple, en sélectionnant catentry id 14501) pour vérifier que les propriétés seller_description.raw et parent_number sont indexées.

  8. Remplacez les profils de recherche Query pour modifier les zones de réponse.

    Vous pouvez remplacer les profils de recherche par défaut en créant un profil personnalisé à l'aide du même nom que le profil par défaut. Si un profil personnalisé avec le même nom qu'un profil par défaut est disponible, le profil personnalisé est utilisé et le profil par défaut est ignoré. Pour des étapes détaillées sur le remplacement des profils de recherche, voir Configuration de votre profil de recherche personnalisé.

    • Remplacez le profil de requête de recherche par défaut pour inclure l'attribut seller_description.raw supplémentaire dans la réponse de requête.
    • Etendez le profil de recherche HCL_findCatalogEntrySKUs par défaut en ajoutant seller_description.raw à la section ResponseFields du profil de recherche existant.
      GET http://QUERY_HOST:QUERY_PORT/search/resources/api/v2/documents/profiles/HCL_findCatalogEntrySKUs
      Par exemple :
      GET http://QUERY_HOST:30920/search/resources/api/v2/documents/profiles/HCL_findCatalogEntrySKUs 

      Pour le profil de recherche findCatalogEntrySKUs, ajoutez seller_description.raw à la section ResponseFields du profil de recherche existant.

      La réponse doit être similaire à :
      { "profileName": "HCL_findCatalogEntrySKUs", "indexName": "product", "query": { "params": [ { "maxRows": "1200" }, { "sortField": "relationship.product.sequence asc" } ], "queryFields": [ "relationship.product.id" ], "provider": [ "com.hcl.commerce.search.internal.expression.provider.SearchInventoryExpressionProvider", "com.hcl.commerce.search.internal.expression.provider.SearchByPublishedEntryOnlyExpressionProvider", "com.hcl.commerce.search.internal.expression.provider.SearchByStorePathExpressionProvider", "com.hcl.commerce.search.internal.expression.provider.SearchBySellerExpressionProvider", "com.hcl.commerce.search.internal.expression.provider.SearchByCatalogExpressionProvider", "com.hcl.commerce.search.internal.expression.provider.SearchByLanguageExpressionProvider", "com.hcl.commerce.search.internal.expression.provider.SearchProductEntitlementExpressionProvider" ], "preprocessor": [], "postprocessor": [ "com.hcl.commerce.search.internal.expression.postprocessor.SearchMainCatalogEntryViewResultQueryPostprocessor", "com.hcl.commerce.search.internal.expression.postprocessor.SearchCatalogEntryViewPriceQueryPostprocessor", "com.hcl.commerce.search.internal.expression.postprocessor.SearchCatalogEntryViewUserDataQueryPostprocessor" ], "responseFields": [ "id.catentry", "id.store", "buyable", "id.catalog", "identifier.sku.raw", "name.raw", "name.override.raw", "description.raw", "description.override.raw", "url.thumbnail", "url.override.thumbnail", "url.image", "url.override.image", "keyword.text", "manufacturer.raw", "id.member", "seller.raw", "seller_description.raw", "type", "prices.*", "path.*", "relationship.product.id", "relationship.item.id", "attribute.source", "url.seo", "url.override.seo", "attachments.*", "images.*", "description.long" ] } } 
      PUT http://QUERY_HOST:30920/search/resources/api/v2/documents/profiles/HCL_findCatalogEntrySKUs 
      La réponse doit être similaire à :
      { "Profile created with name": "HCL_findCatalogEntrySKUs" } 
    • Répétez cette étape pour le profil de recherche HCL_V2_findProductByPartNumber_Details en ajoutant seller_description.raw dans la section responseFields du profil de recherche existant.
      GET http://QUERY_HOST:QUERY_PORT/search/resources/api/v2/documents/profiles/HCL_V2_findProductByPartNumber_Details
    • Ajoutez seller_description.raw dans la section responseFields du profil de recherche existant pour l'utiliser comme corps de requête pour l'appel PUT ci-dessous afin de remplacer le profil de recherche HCL_V2_findProductByPartNumber_Details par défaut.
      PUT http://QUERY_HOST:30920/search/resources/api/v2/documents/profiles/HCL_V2_findProductByPartNumber_Details
      { "profileName": "HCL_V2_findProductByPartNumber_Details", "indexName": "product", "query": { "params": [ { "DynamicKitReturnPrice": "true" }, { "maxRows": "50" } ], "queryFields": [ "identifier.sku.normalized" ], "provider": [ "com.hcl.commerce.search.internal.expression.provider.SearchByCatalogExpressionProvider", "com.hcl.commerce.search.internal.expression.provider.SearchByStorePathExpressionProvider", "com.hcl.commerce.search.internal.expression.provider.SearchBySellerExpressionProvider", "com.hcl.commerce.search.internal.expression.provider.SearchByLanguageExpressionProvider", "com.hcl.commerce.search.internal.expression.provider.SearchInventoryExpressionProvider", "com.hcl.commerce.search.internal.expression.provider.SearchProductEntitlementExpressionProvider" ], "preprocessor": [], "postprocessor": [ "com.hcl.commerce.search.internal.expression.postprocessor.SearchMainCatalogEntryViewResultQueryPostprocessor", "com.hcl.commerce.search.internal.expression.postprocessor.SearchCatalogEntryViewPriceQueryPostprocessor", "com.hcl.commerce.search.internal.expression.postprocessor.SearchCatalogEntryViewSKUQueryPostprocessor", "com.hcl.commerce.search.internal.expression.postprocessor.SearchCatalogEntryViewAttributesQueryPostprocessor", "com.hcl.commerce.search.internal.expression.postprocessor.SearchCatalogEntryViewAttachmentsQueryPostprocessor", "com.hcl.commerce.search.internal.expression.postprocessor.SearchCatalogEntryViewImagesQueryPostProcessor", "com.hcl.commerce.search.internal.expression.postprocessor.SearchCatalogEntryViewComponentsQueryPostprocessor", "com.hcl.commerce.search.internal.expression.postprocessor.SearchCatalogEntryViewMerchandisingAssocQueryPostprocessor", "com.hcl.commerce.search.internal.expression.postprocessor.SearchCatalogEntryViewUserDataQueryPostprocessor" ], "responseFields": [ "id.catentry", "id.store", "id.catalog", "buyable", "identifier.sku.raw", "name.raw", "name.override.raw", "description.raw", "description.override.raw", "url.thumbnail", "url.override.thumbnail", "keyword.text", "manufacturer.raw", "id.member", "seller.raw", "seller_description.raw", "type", "prices.*", "path.*", "relationship.item.*", "relationship.product.id", "relationship.component.*", "subscription.type", "subscription.recurring", "url.image", "url.override.image", "description.long", "attribute.source", "kit.components", "kit.preconfigured", "kit.model", "kit.URL", "kit.default_configuration", "kit.pdks", "kit.parent.model", "kit.configurable", "kit.parent.configurable", "associations.*", "url.seo", "attachments.*", "images.*" ] } } 
      La réponse doit ressembler à :
      { "Profile created with name": "HCL_V2_findProductByPartNumber_Details" } 
    • Redémarrez le conteneur du service Query.

    Testez votre personnalisation pour vous assurer qu'elle a abouti.

  9. Testez les extensions de profil Ingest.
    L'étape de test est la même pour les environnements de développement et d'exécution.
    • Générez l'index pour le magasin EmeraldCAS (storeId = 12001).
    • Une fois l'indexation terminée et lorsque l'interface utilisateur de NiFi affiche 0/0 octet de données mises en file d'attente, effectuez les tests suivants pour vous assurer que les zones de réponse contiennent seller_description.raw lorsque la recherche est effectuée pour les profils de recherche HCL_findCatalogEntrySKUs et HCL_V2_findProductByPartNumber_Details.
      • Test 1 : Vérifiez que la réponse du nœud final de requête de recherche suivant extrait seller_description.raw pour le profil HCL_findCatalogEntrySKUs.

        Eexécutez la commande GET suivante à l'aide d'un client REST.
        GET http://QUERY_HOST:QUERY_PORT/search/resources/api/v2/products?storeId=31&seller=7000000000000007002&id=14503
      • Test 2 : Vérifiez que la réponse du nœud final de requête suivant extrait seller_description.raw pour le profil HCL_V2_findProductByPartNumber_Details.

        Eexécutez la commande GET suivante à l'aide d'un client REST.
        GET http://QUERY_HOST:QUERY_PORT/search/resources/api/v2/products?storeId=31&partNumber=MPHBA031_3103&seller=7000000000000007002