Cycle de vie de l'index Elasticsearch
Structure, avantages et cycle de vie de la version 9.1. Système Elasticsearch.
Structure d'un index multidimensionnel
Dans l'implémentation de HCL Commerce version 9.1 d'Elasticsearch, des schémas d'index sont fournis pour chaque schéma d'index de produit. Chaque schéma est ensuite subdivisé en plusieurs classifications. Par exemple, le schéma des produits est divisé par autorisation, prix, stock, navigation, attributs et propriétés. Chaque classification peut être indexée en plusieurs types de zones en fonction d'utilisations telles que l'affichage, la recherche, le filtrage, la création de facettes, la stimulation ou le tri. Pour examiner le schéma pour cet exemple, voir Pipeline d'index Produit Ingest.
Le service Ingest crée un document indexé distinct pour chaque langue prise en charge, pour chaque catalogue pris en charge et pour chaque magasin. Cela peut être important si vous vous attendez à ce que le résultat soit un index très volumineux et que la taille soit importante au départ lors de la configuration de l'index. Toutefois, la capacité d'Elasticsearch à faire des mises à jour incrémentielles modifie l'équation une fois l'index configuré. Si les modifications au jour le jour ne sont pas importantes, vous ne trouverez pas que les performances seront particulièrement affectées, comme c'est le cas si vous deviez faire une réindexation complète régulière. En outre, l'utilisation d'e-sites améliore également les performances. Chaque e-site dispose de son propre index, car chaque magasin peut avoir son propre cycle de vie des données. En option, si les e-sites partagent le cycle de vie des données et le catalogue, vous pouvez utiliser l'approche du catalogue principal avec les magasins.
Tout document indexé peut être utilisé dans plusieurs contextes, tels que approuvé (dépublié) et actif (publié). Ils peuvent avoir des valeurs en cours, mises à jour ou écrasées, chacune étant exprimée sous la forme d'un nouveau nom de zone d'index avec le préfixe approprié. Notez que les nouveaux documents (ou à supprimer) sont étiquetés comme nouveaux (ou supprimés) pour éviter d'être inclus dans l'index Actif.
Requêtes Push-To-Live
Lorsque la propagation de transfert démarre, l'opération de publication sur le Transaction server de création va pousser ou reproduire toutes les modifications prêtes pour la production de la base de données de création vers la base de données opérationnelle.
Cette approche Push-To-Live (PTL) n'a plus besoin d'une réplication vers les nœuds subordonnés. Au lieu de cela, une copie du nouvel index actif sera créée dans l'environnement Actif et est échangée une fois que le nouvel index est prêt. L'ancienne version sera immédiatement mise hors service.
Les caches d'objets de données et la mise en cache REST utilisés dans le service Query d'environnement actif sont invalidés.
Configuration d'index initiale
Pour effectuer une configuration d'index initiale, effectuez une opération de réindexation complète des indices de recherche pour le magasin spécifique. Le processus d'indexation commence par la création du schéma, de la base de données de produits et de STA. Les données sont chargées en explorant progressivement le catalogue, puis la catégorie. Ensuite, la boucle de flux principale prend le relais, en traitant les attributs, les produits, les URL de référencement et, enfin, à partir de cette boucle, le prix
Lors des opérations de réindexation complètes suivantes, le nouvel index est généré en parallèle avec l'index existant. Une fois le nouvel index prêt, l'alias de l'index est simplement mis à jour avec l'emplacement du nouvel index. A ce stade, le nouvel index devient l'index actif. Il existe également une cadence régulière des mises à jour de stock, par exemple, qui peut être programmée en tant que travaux réguliers. Ces mises à jour peuvent être réalisées via une "copie intelligente" dans l'index et le prix. La copie intelligente ne copie pas chaque mise à jour, car plusieurs n'auront pas changé entre les exécutions. La copie de l'intégralité déclencherait l'équivalent d'une invalidation complète.
Au cours de ce processus et par la suite, le traitement du langage naturel (NLP) est effectué et les relations de matchmaker telles que la mise en correspondance des couleurs sont construites. Ces éléments ne s'appuient pas sur l'index en cours de finalisation, mais complétera son contenu une fois qu'ils seront terminés. L'utilisation du NLP est coûteuse, mais certaines fonctions du jeu de données NLP, telles que la lemmatisation, changent rarement. La première exécution du NLP est un peu plus longue, car elle effectue une lemmatisation complète et écrit dans l'index.
Mises à jour en temps quasi réel (NRT) dans l'environnement de création
Toutes les mises à jour de données métier dans le Centre de gestion sont d'abord écrites dans la base de données. Ceci est suivi d'un événement de mise à jour incrémentielle (avec le contexte de création) effectué via Redis. Une logique métier intégrée au pipeline d'indexation Apache NiFi est utilisée pour analyser et traiter ces demandes de changement.
Agissant en tant que bus de messages, Redis diffuse cette demande de changement à tous les connecteurs NiFi qui surveillent ce type d'opération. Le résultat est la mise à jour incrémentielle des index de recherche appropriés. Le cache d'objet de données et la mise en cache REST utilisés dans le service de requête pour l'environnement de création sont invalidés.
Cette approche peut proposer une expérience de mise à jour en quasi-temps réel via le service Query, lors de la prévisualisation de la vitrine dans l'environnement de création.
http://<HOSTNAME>:<port>/search/resources/api/v2/data/status?storeId=1 Une interface Swagger vers ce point de terminaison, V2-Data-Status, est disponible dans l'API REST Query. Chargement de données avec la recherche basée sur Elasticsearch
L'pour l'utilitaire de chargement de données est un outil qui charge les données d'un fichier source vers une base de données cible. Il peut également supprimer des données d'une base de données. Dataload prend en charge les mises à jour incrémentielles des données du catalogue si le moteur de recherche Elasticsearch est activé.
- Configuration
- Configurez Dataload de manière à déclencher des mises à jour incrémentielles de l'index. Pour plus d'informations, voir pour l'utilitaire de chargement de données.
- Processus de mise à jour d'index
-
Une fois que le processus Dataload a mis à jour la base de données Commerce avec les données commerciales, l'historique des modifications correspondant est écrit dans les deux tables de la base de données TI_DELTA, comme c'est le cas avec le processus Solr correspondant. Une fois que l'opération de chargement a abouti, un événement est envoyé à NiFi via Redis pour lancer un flux d'indexation dans NiFi.
Le cache d'objet de données et les caches REST utilisés dans le service Query pour l'environnement de création sont invalidés. Le cas échéant, toute mise en cache JSP utilisée dans le serveur de magasin peut également être invalidée.
Note: Etant donné que le Dataload est exécuté en tant que processus de traitement par lots non interactif et qu'il peut contenir une grande quantité de mises à jour des données, les index de recherche peuvent être plus lents à s'exécuter et les modifications ne sont visibles qu'après invalidation du cache.
- Dans l'architecture Solr, la modification du nom d'un produit nécessite un processus d'indexation delta afin de regénérer le document complet pour le produit donné. La raison tient au fait que Solr n'offre pas de logique intégrée permettant d'identifier le changement spécifique appliqué. Lorsque vous utilisez NRT avec Elasticsearch, les champs tels que Produit sont mis à jour directement. Ce comportement offre un gain de performances par rapport à Solr.
- Le chargement de données hors ligne constitue la méthode privilégiée dans la mesure où il utilise la connectivité JDBC directe et est plus rapide que le chargement de catalogue. Utilisez le chargement de données hors ligne pour charger de vastes volumes de données.
- Les données mises à jour via Dataload seront traitées de la même manière qu'avec la recherche basée sur Solr. L'utilitaire utilise les tables de base de données TI_DELTA_CATENTRY et CATGROUP pour suivre le produit ou la catégorie ayant été mis à jour.
- Elasticsearch est différent de Solr en ce que Dataload envoie un événement « Complete » via Redis à NiFi une fois l'opération de chargement de données terminée. Cet événement peut prendre jusqu'à quatre minutes, car la tâche du planificateur qui s'exécute sur le Transaction server ne se reproduit qu'une fois à chaque intervalle régulier.
- Une fois que cet événement « Complete » atteint NiFi, le connecteur auth.dataload traite les produits ou catégories identifiés dans TI_DELTA_CATENTRY et TI_DELTA_CATGROUP.
- Lorsque les espaces de travail sont activés, les données peuvent être chargées directement, soit dans le schéma de contenu approuvé, soit dans le schéma de l'espace de travail. Le connecteur auth.dataload dans NiFi peut effectuer une ingestion par rapport au schéma de base de données approprié en fonction du contexte d'espace de travail donné.
- Que vous utilisiez ou non des espaces de travail, une fois que Dataload a chargé avec succès les données dans l'environnement de création, il devient possible d'utiliser Push-To-Live pour déplacer les modifications indexées vers l'environnement opérationnel. Voir les instructions relatives à Push-To-Live pour savoir comment effectuer cette tâche. Exécutez StagingProp avant de transférer les données indexées de l'environnement de création vers l'environnement opérationnel.
- Lorsque Push-To-Live est effectué, l'index de création est cloné dans l'environnement opérationnel (à l'exception de tous les documents et métadonnées liés à l'espace de travail), puis une série d'événements d'invalidation de cache pertinents se produisent. Cette invalidation du cache de haut niveau est basée uniquement sur les produits ou catégories qui ont été mis à jour à la suite des processus Staging Propagation et Push-To-Live.

Sauvegardes d'index
Lorsque vous générez un index, par défaut, les copies de sauvegarde des deux générations précédentes sont conservées. Ce paramètre n'affecte pas les performances, bien que, dans certaines circonstances, vous puissiez constater des incohérences apparentes dans vos journaux. Par exemple, si vous exécutez plusieurs régénérations d'index Store 1, Store 11 ou eSite dans une succession rapide, vous ne verrez qu'un seul index avec l'horodatage le plus récent. Etant donné que les sauvegardes sont conservées, dans ce cas, vous pouvez observer deux index présents qui ont le même horodatage. Cela indique simplement que des sauvegardes sont en cours de création et que la sauvegarde la plus récente a reçu le même horodatage que l'index opérationnel actuel.
https://Data-Query:Port/search/resources/api/v2/configuration?nodeName=ingest&envType=authRecherchez le paramètre alias.keep.backup. Le paramètre par défaut est 2.Body: { "global": { "connector": [ { "name": "attribute", "property": [ { "name": "alias.keep.backup", "value": "0" } ] } ] } }Pour cet exemple, le résultat est qu'aucun index de sauvegarde n'est créé. Vous pouvez ajuster le nombre de sauvegardes en fonction de votre environnement.