Pipeline d'index Stock Ingest
Pour plus d'informations sur la conception du schéma d'index Produit, voir Schéma d'index Produit Ingest. Pour plus d'informations sur l'appel du service Ingest, voir Rechercher l'API de service Ingest. Pour une liste complète des zones et des paramètres d'index Elasticsearch, voir Types de zones d'index Elasticsearch.
Mappage de la zone de stock à partir de la base de données
La séquence d'étapes suivante illustre le pipeline d'indexation Inventaire implémenté dans Apache NiFi. Le flux se compose principalement de deux étapes :
- Etape 1 : Associer les stocks parent au document Produit
- Cette étape décrit comment les données Stock peuvent être transformées et chargées dans l'index Produit.
- Etape 2 : Associer les stocks enfant au document Produit
- Cette étape décrit comment les données du stock enfant peuvent être transformées et chargées dans l'index Produit. Il commence par exécuter l'instruction SQL suivante pour récupérer les données Stock depuis la base de données Commerce :
Ensuite, le jeu de résultats est transmis au processeur FindChildInventoriesFromDatabase pour transformation, à l'aide du tableau suivant 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 :SELECT CATENTRY.CATENTRY_ID, LISTAGG(INVENTORY.FFMCENTER_ID, ', ') WITHIN GROUP (ORDER BY INVENTORY.FFMCENTER_ID) FFMCENTER_ID, LISTAGG(TO_CHAR(INVENTORY.QUANTITY), ', ') WITHIN GROUP (ORDER BY INVENTORY.FFMCENTER_ID) QUANTITY, SUM(INVENTORY.QUANTITY) TOTAL FROM INVENTORY, CATENTRY, CATGPENREL WHERE CATGPENREL.CATALOG_ID = ${param.catalogId} AND CATENTRY.CATENTRY_ID = CATGPENREL.CATENTRY_ID AND CATENTRY.CATENTTYPE_ID = 'ItemBean' AND CATENTRY.MARKFORDELETE = 0 AND CATENTRY.CATENTRY_ID = INVENTORY.CATENTRY_ID AND INVENTORY.STORE_ID = ${param.storeId} GROUP BY CATENTRY.CATENTRY_ID ORDER BY CATENTRY.CATENTRY_ID OFFSET ${param.offset} ROWS FETCH NEXT ${param.pageSize} ROWS ONLYPour un exemple de code, voir les exemples de l'étape 2Nom de zone d'index Type de zone d'index Description Propriétés inventories/<fulfillment>/quantity float Quantité du stock actuel ; mappé à INVENTORY.QUANTITY inventories/<fulfillment>/id id_string L'ID du centre de distribution du stock actuel ; mappé à INVENTORY.FFMCENTER_ID inventories/total float Somme de la quantité provenant de INVENTORY. QUANTITY de tous les centres de distribution pour l'entrée de catalogue.
- Exemples de l'étape 1
- Le code suivant est un exemple des données d'entrée pour le processeur FindParentInventoriesFromDatabase :
{ "CATENTRY_ID_PARENT": 13698, "FFMCENTER_ID": "10501, 11501", "QUANTITY": "606, 600", "TOTAL": 1206.0 }
- Exemples de l'étape 2
- Le code suivant est un exemple des données d'entrée pour le processeur FindChildInventoriesFromDatabase :
{ "CATENTRY_ID": 11778, "FFMCENTER_ID": "10501, 11501, 11502, 11503, 11504, 11505, 11506, 11507, 11508, 11509, 11510, 11511, 11512, 11513, 11514, 11515, 11516, 11517, 11518, 11519, 11520, 11521, 11522, 11523, 11524, 11525, 11526, 11527, 11528, 11529, 11530, 11531, 11532, 11533, 11534, 11535, 11536, 11537, 11538, 11539, 11540, 11541, 11542, 11543, 11544, 11545, 11546, 11547, 11548, 11549, 11550, 11551, 11552, 11553, 11554, 11555", "QUANTITY": "101, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100", "TOTAL": 5601.0 }