Création de l'index Elasticsearch

Une fois que vous avez installé les applications de base HCL Commerce et configuré un environnement de vitrine de magasin initial, démarrez les conteneurs Search Docker par défaut. Suivez ensuite ces instructions pour connecter les microservices de recherche version 9.1 dans un système de travail.

Procedure

  1. Créez l'index de recherche.
    L'approche recommandée consiste à effectuer l'appel de génération d'index directement sur le serveur Ingest. Pour chaque index à l'exception de l'index de prix, vous pouvez obtenir de meilleurs détails et des journaux plus complets de cette façon. Commencez par déterminer le nom du connecteur que vous générez. Vous générez généralement par rapport à auth.reindex, ce qui est comparable à l'exécution d'une génération d'index complète avec Solr. Vous pouvez générer par rapport à d'autres connecteurs si vous souhaitez indexer des sous-ensembles spécifiques.
    HCL Commerce Version 9.1.12.0 or laterTip: Si vous utilisez la fonction Marketplace, l'indexation par défaut attend que le processus de post-indexation se termine avant de mettre à jour la vitrine, contrairement aux versions précédentes. Il peut y avoir un délai avant l'actualisation de la vitrine si vous avez un grand nombre d'utilisateurs de la place de marché. Pour empêcher la vitrine d'attendre la fin de la post-indexation, définissez le paramètre flow.concurrent.postindex sur true au lieu de sa valeur par défaut, false, à l'aide du nœud final suivant.
    http://Query_Server:30920/search/resources/api/v2/configuration?nodeName=ingest&envType=auth
    {
        "global": {
            "connector": [
                {
                    "name": "attribute",
                    "property": [
    {                         "name": "flow.concurrent.postindex", "value": "true"   }
                    ]
                }
            ]
        }
    }
    1. Générez l'index à l'aide de l'appel REST suivant. Cet exemple suppose que vous indexez le connecteur auth.reindex.
      POST https://ingestServerHostname:port/connectors/auth.reindex/run?storeId=11
      Cet appel renverra une valeur runID. Par exemple :
      {     "runId": "i-26144b4d-cd1c-4679-b2c2-870fc27e6095" } 
    2. Vous pouvez vérifier le statut de la génération pendant qu'elle est en cours. Pour ce faire, prenez la valeur runID renvoyée à l'étape 1.a et effectuez l'appel REST suivant, en insérant la runID après /runs/ dans la chaîne. A l'aide de la valeur runID ci-dessus, par exemple, l'appel serait :
      GET http://ingestServerHostname:port/connectors/auth.reindex/runs/i-26144b4d-cd1c-4679-b2c2-870fc27e6095/status
      Les informations de statut renvoyées vous indiquent approximativement la progression de la génération de l'index.
      {     "date": "2022-04-06T17:51:44.462",
           "runId": "i-26144b4d-cd1c-4679-b2c2-870fc27e6095",
           "fromType": "Ingest",
           "message": "Indexing running, current progression of indexing is at process group: auth.reindex - WaitLink - Category Stage 1a",
           "status": -1,
           "progress": "30% (30 out of 101 pipes processed) " } 
      CAUTION:
      1. La valeur en pourcentage fournie dans la zone de progression ne fait pas référence à l'heure. Dans l'exemple ci-dessus, 30 % ne signifie pas nécessairement que vous êtes à 30 % du temps d'indexation écoulé. Ce pourcentage est plutôt une mesure du nombre de canaux traités jusqu'à présent.
      2. Avec les appels suivants, vous pouvez voir la valeur de progression augmenter ou baisser. Par exemple, votre premier appel peut renvoyer une valeur de progression de 60 %, tandis qu'une seconde effectuée peu de temps plus tard peut renvoyer 30 %. Cela se produit, car le processus d'indexation est divisé en différents catalogues, langues, et ainsi de suite, et ils ne sont pas tous traités en même temps.
      Lorsque l'indexation est terminée, l'appel génère un rapport récapitulant l'index, avec les erreurs et les conditions spéciales notées. Par exemple,
      "message": "Indexing run finished according to Nifi queue being empty for given connector. 
      {\"start\":\"2022-04-06T17:50:17.821Z\",\"end\":\"2022-04-06T17:53:02.346Z\",\"run\":\"i-26144b4d-cd1c-4679-b2c2-870fc27e6095\",\"severities\":
      {\"I\":15,\"W\":2}
      
      ,\"codes\":{\"DI1002I\":14,\"DI1050W\":2},\"locations\":{\"warning\":
      {\"Others\":2}
      
      ,\"info\":{\"Others\":14,\"Price Stage 2, Copy Contract Prices\":1}},\"elapsed\":{\"absolute\":{\"connector\":164525,\"summary\":{\"Attribute Pipeline\":\"4548\",
      \"Catalog Pipeline\":\"5155\",\"Category Pipeline\":\"13956\",\"Price Pipeline\":\"2911\",\"Product Pipeline\":\"21389\",\"Store Pipeline\":\"25336\",\"URL 
      En supprimant le /status à la fin de l'appel, vous pouvez extraire des journaux plus détaillés pour examiner les erreurs éventuelles. L'index de prix est une exception ; il ne peut être généré que par rapport au Transaction server. En effet, les calculs de prix sont effectués sur le Transaction server, vous devez donc toujours effectuer l'appel POST sur le Transaction server.
    Vous pouvez également utiliser la méthode suivante pour générer l'index.
    1. Exécutez la commande suivante à partir d'un client REST.
      POST: https://ingestServerHostname:ingestServerPort/connectors/auth.reindex/run?storeId=11
      Laissez le corps vide et utilisez l'authentification de base avec le nom d'utilisateur spiuser et le mot de passe spiuserPassword.
      Note:
      • Le mot de passe par défaut de l'utilisateur spiuser est passw0rd pour HCL Commerce 9.1.0.0 à 9.1.8.0 et QxV7uCk6RRiwvPVaa4wdD78jaHi2za8ssjneNMdu3vgqi pour HCL Commerce version 9.1.9.0 et ultérieure.
      • Il est essentiel de définir votre propre mot de passe spiuser pour sécuriser votre déploiement. Pour plus d'informations, voir Définition du mot de passe spiuser dans vos images Docker.

      Dans l'exemple, le storeId a comme valeur 11 ; remplacez-la par le storeId pour vos propres magasins.

      Les valeurs par défaut sont les suivantes :
      • AuroraESite : storeId=1
      • AuroraB2BESite : storeId=2
      • Emerald storeId=11
      • Sapphire storeId=12

      OR

      A partir d'une invite de commande, entrez la commande suivante :

      curl --user spiuser:spi_plain_text_password --insecure -X POST "https://ingestServerHostname:ingestServerPort/connectors/auth.reindex/run?storeId=11"
      Cet appel renverra une valeur runID. Par exemple :
      { "runId": "i-26144b4d-cd1c-4679-b2c2-870fc27e6095" }
    2. Attendez que la génération d'index se termine ou observez son statut à l'aide de sa valeur runID.
      Lancez la commande GET REST suivante pour obtenir le statut de génération.
      Utilisez la valeur renvoyée pour runID de l'étape précédente.
      GET http://ingestServerHostname:ingestServerPort/connectors/auth.reindex/runs/runId/status

      OU

      A partir d'une invite de commande, entrez la commande suivante :
      curl --user spiuser:spi_plain_text_password --insecure -X GET "http://ingestServerHostname:ingestServerPort/connectors/auth.reindex/runs/runId/status"
      • Si votre génération est en cours, un message similaire à ce qui suit fournit des détails sur son statut actuel.
        {     "date": "2022-04-06T17:51:44.462",     "runId": "i-26144b4d-cd1c-4679-b2c2-870fc27e6095",     "fromType": "Ingest",     "message": "Indexing running, current progression of indexing is at process group: auth.reindex - WaitLink - Category Stage 1a",     "status": -1,     "progress": "30% (30 out of 101 pipes processed) " }
        Note: Le pourcentage de progression est une métrique simple basée sur le nombre de canaux traités. Il ne reflète pas précisément les progrès en termes de temps.
      • Une fois terminé, un message similaire à ce qui suit détaillera le résultat de la génération terminée.
        "message": "Indexing run finished according to Nifi queue being empty for given connector. {\"start\":\"2022-04-06T17:50:17.821Z\",\"end\":\"2022-04-06T17:53:02.346Z\",\"run\":\"i-26144b4d-cd1c-4679-b2c2-870fc27e6095\",\"severities\":
        
        {\"I\":15,\"W\":2}
        ,\"codes\":{\"DI1002I\":14,\"DI1050W\":2},\"locations\":{\"warning\":
        
        {\"Others\":2}
        ,\"info\":{\"Others\":14,\"Price Stage 2, Copy Contract Prices\":1}},\"elapsed\":{\"absolute\":{\"connector\":164525,\"summary\":{\"Attribute Pipeline\":\"4548\",\"Catalog Pipeline\":\"5155\",\"Category Pipeline\":\"13956\",\"Price Pipeline\":\"2911\",\"Product Pipeline\":\"21389\",\"Store Pipeline\":\"25336\",\"URL 
        Vous pouvez supprimer le /status à la fin de REST GET pour obtenir des journaux plus détaillés afin d'examiner les erreurs détectées.
    3. Vérifiez les données de l'index de recherche.
      A l'aide d'un client REST, exécutez les commandes POST suivantes pour vérifier que les données de l'index de recherche sont disponibles. Assurez-vous que le contenu du corps contient { "query": { "bool": { "must": { "match_all": {} } } } }​.
      • Données de magasin : http://ElasticSearchServerName:30200/auth.store/_search
      • Données de catégorie : http://ElasticSearchServerName:30200/auth.storeId.category/_search
      • Données de production : http://ElasticSearchServerName:30200/auth.storeId.product/_search
  2. Vérifiez que le service de requête est en cours d'exécution et que vous pouvez trouver des données. A l'aide d'un client REST, exécutez la commande suivante :
    https://CommerceServerName​:30901/search/resources/store/storeId/categoryview/@top
    Cet appel renvoie les catégories supérieures du magasin spécifié.
  3. Créer un index des prix des contrats B2B
    Après avoir créé des contrats avec ajustement des prix, créez l'index complet comme décrit à l'étape 2, puis créez l'index des prix du contrat. Exécutez la commande suivante à partir d'un client REST.
    POST: https://CommerceServerName​​​:ts-app-port/wcs/resources/admin/index/dataImport/build?connectorId=price&indexSubType=Price&storeId=12
    HCL Commerce Version 9.1.2.0 or later
    POST: https://CommerceServerName​​​:ts-app-port/wcs/resources/admin/index/dataImport/build?connectorId=auth.price&indexSubType=Price&storeId=12
    Laissez le corps vide et utilisez l'authentification de base : Username:spiuser et Password: spiuserPassword. Dans l'exemple, le storeId a pour valeur 12 (Sapphire) ; remplacez-la par le storeId pour vos propres magasins.
    Vérifiez le statut de l'index de génération via l'interface REST.
     GET: https://CommerceServerName​​​:ts-app-port/wcs/resources/admin/index/dataImport/status?jobStatusId=jobStatusId
    jobStatusId est la valeur de jobStatusId dans la réponse à l'étape ci-dessus. Utilisez l'authentification de base avec le nom d'utilisateur spiuser et le mot de passe spiuserPassword.
    Note:
    • Le mot de passe par défaut de l'utilisateur spiuser est passw0rd pour HCL Commerce 9.1.0.0 à 9.1.8.0 et QxV7uCk6RRiwvPVaa4wdD78jaHi2za8ssjneNMdu3vgqi pour HCL Commerce version 9.1.9.0 ou ultérieure.

    Les paramètres facultatifs suivants permettent d'effectuer une mise à jour de prix plus ciblée.

    contractId
    Facultatif : Utilisé pour générer des prix pour les ID de contrat spécifiés.
    Précisez les ID de contrat séparés par des virgules à indexer.
    Si aucun ID de contrat n'est transmis, un recalcul complet est exécuté par défaut.
    Exemple : https://localhost/wcs/resources/admin/index/dataImport/build?indexSubType=Price&contractId=-10008,-10005
    catentry
    Facultatif : Utilisé pour générer des prix pour les entrées de catalogue spécifiées.
    Précisez les ID d'entrée de catalogue séparés par des virgules à indexer.
    Si aucun ID d'entrée de catalogue n'est transmis, un recalcul complet est exécuté par défaut.
    Exemple : https://localhost/wcs/resources/admin/index/dataImport/build?indexSubType=Price&catentryId=10006,10005
    devise
    Facultatif : Utilisé pour générer des prix pour les devises spécifiées.
    Précisez les ID de devise séparés par des virgules à indexer.
    Note: Vérifiez que la table CURLISTE contient toutes les devises supplémentaires que vous souhaitez générer par l'utilitaire de calcul des prix.
    Si aucun ID de devise n'est transmis, un recalcul complet est exécuté par défaut.
    Exemple : https://localhost/wcs/resources/admin/index/dataImport/build?indexSubType=Price&currency=USD,CAD
  4. Activez les environnements de création et de production avec Push-to-live (PTL) de bout en bout. Cette étape part du principe que vous avez créé les connecteurs Push-to-Live.
    1. Définissez envType sur live dans le fichier input.properties de configuration. Déployez l'environnement opérationnel HCL Commerce en suivant les instructions dans Déploiement de HCL Commerce version 9.1 à l'aide de Docker Compose (pour une utilisation hors production).
    2. Pour répliquer l'index de recherche sur l'environnement de production, émettez la commande suivante à partir d'un client REST.
      POST: https://CommerceServerName​​​:ts-app-port/wcs/resources/admin/index/dataImport/build?connectorId=push-to-live&storeId=1
      Laissez le corps vide et utilisez l'authentification de base avec le nom d'utilisateur spiuser et le mot de passe spiuserPassword.
      Note:
      • Le mot de passe par défaut de l'utilisateur spiuser est passw0rd pour HCL Commerce 9.1.0.0 à 9.1.8.0 et QxV7uCk6RRiwvPVaa4wdD78jaHi2za8ssjneNMdu3vgqi pour HCL Commerce version 9.1.9.0 ou ultérieure.
      • Le storeId est donné en tant que 1 (AuroraESite). Remplacez cette valeur par le storeId de vos propres magasins.
      Vous pouvez vérifier le statut via l'interface REST.
      GET: https://CommerceServerName​​​:ts-app-port/wcs/resources/admin/index/dataImport/status?jobStatusId=jobStatusId
      HCL Commerce Version 9.1.4.0Restriction: Si les modifications apportées aux données de catalogue ne sont pas disponibles dans vos magasins actifs après une opération push-to-live, déclenchez une opération d'invalidation WCT+ESINDEX lorsque vous faites la mise à jour. Pour plus d'informations sur les caches à mettre à jour et la procédure, voir Les modifications d'index ne sont pas reflétées dans la vitrine après le processus push-to-live Elasticsearch.
    3. Pour les modifications du catalogue Management Center for HCL Commerce, exécutez un index complet, exécutez stagingprop comme d'habitude, puis exécutez PTL.