Utilisation de l'agrégation de liste avec Ingest
Vous pouvez émettre des appels SQL pour extraire des données de base de données à partir du pipeline NiFi. Ces informations sont converties du format tabulaire "2d" dans lequel la base de données les stocke, en chaîne unidimensionnelle qu'attend le processus Elasticsearch. Normalement, cette agrégation de liste a lieu dans la base de données, mais chaque base de données impose une limite sur la longueur que peut avoir une chaîne renvoyée. Dans le cas de DB2, par exemple, cette longueur est de 32k. Si le SQL tente de sérialiser une chaîne plus longue, elle sera tronquée.
Pour éviter ce problème, HCL Commerce Search fournit une fonction au niveau de l'application pour effectuer la sérialisation au lieu d'être exécutée par la base de données. Vous pouvez contrôler ce comportement à l'aide d'une variable que vous pouvez définir au niveau du flux ou, en tant que commutateur global, au niveau du lien de réindexation ou du lien NRT. Cette variable est flow.database.listagg et la valeur par défaut est True. Sa définition dans ReindexLink, NRTLink ou DataloadLink signifie définir cette propriété globalement tout au long du flux de données, tandis que la définition de cette propriété sur un canal de connecteur à la place va limiter l'opération par rapport à cette étape donnée.
En général, vous devez utiliser la fonction LISTAGG de la base de données et la désactiver uniquement lorsque la limite est atteinte. Cela évite d'avoir à effectuer inutilement l'agrégation de listes dans l'application NiFi.