Extension des connecteurs Ingest

HCL Commerce fournit des connecteurs Ingest par défaut qui effectuent des tâches d'ingestion et de transformation de données afin de préparer les données pour l'index de recherche. Vous pouvez les utiliser tels quels ou personnaliser ces connecteurs Ingest par défaut en fonction de vos besoins métier à l'aide de l'API de services Ingest de recherche. Cette rubrique décrit les personnalisations que vous pouvez effectuer et comment gérer ces personnalisations et les déplacer d'une version à l'autre.

Personnalisations

Vous pouvez effectuer les deux types de personnalisations suivantes au niveau des connecteurs Ingest par défaut :
Personnaliser la structure des connecteurs Ingest par défaut (mise à niveau)

Apporter des modifications structurelles aux connecteurs Ingest par défaut. Une modification structurelle fait référence à l'ajout ou à la suppression de canaux (groupes de processus) au niveau des connecteurs par défaut. Par exemple, l'ajout de canaux de marge bénéficiaire au connecteur auth.reindex par défaut.

Pour effectuer la modification structurelle :
  1. 1. Obtenez le JSON de descripteur de connecteur complet pour le connecteur spécifique à l'aide du nœud final GET /connector/{connectorID}
    Note: Vous pouvez également extraire le JSON de descripteur de connecteur complet du connecteur spécifique à partir du conteneur Ingest, profile/apps/search-ingest.ear/search-ingest.war/WEB-INF/classes/deployments
  2. Après avoir obtenu le JSON complet, copiez le descripteur complet dans un nouveau fichier et modifiez la structure selon vos besoins.
  3. Utilisez l'API de mise à niveau avec le descripteur de connecteur complet (ConnectorDescriptorJson) présentant la modification structurelle.
Exemple
Voici un exemple illustrant le flux complet des modifications structurelles apportées au connecteur auth.reindex en insérant une nouvelle section de descripteur de connecteur personnalisé pour un canal personnalisé.
  1. GET http://\INGEST_HOST:INGEST_PORT/connectors/auth.reindex
    {
      "id": "auth.reindex",
      "name": "auth.reindex",
      "description": "This is the connector to perform a full re-indexing.  This operation involves multiple indexing pipelines executed in a sequential fashion.",
      "created": "2022-01-18T22:56:06.657",
      "modified": "2022-01-18T22:56:06.657",
      "pipes": [
        {
          "name": "ResetLink",
          "label": "ResetLink",
          "properties": [
            {
              "name": "flow.database.listagg",
              "value": "true",
              "scope":
    
    {             "name": "Assign Database Setting",             "type": "PROCESS_GROUP"           }
            },
    .
    .
    .
    
        {
          "name": "Terminal",
          "label": "Terminal",
          "properties": [
            {
              "name": "connector.name",
              "value": "auth.reindex",
              "scope":
    
    {             "name": "Terminal",             "type": "PROCESS_GROUP"           }
            },
            {
              "name": "pipe.name",
              "value": "Terminal",
              "scope":
    
    {             "name": "Terminal",             "type": "PROCESS_GROUP"           }
            }
          ]
        }
      ]
    }
  2. Editez le fichier JSON ci-dessus pour ajouter vos informations de descripteur de connecteur de canal personnalisé à l'emplacement approprié dans le connecteur auth.reindex. Pour plus d'informations, voir le tutoriel de marge bénéficiaire Elasticsearch : Personnaliser le descripteur de connecteur du connecteur existant avec la personnalisation de marge bénéficiaire
    {
    "name": "ProfitMarginSchemaUpdateConnector"
    },
    {
    "name": "ProfitMarginDatabaseConnectorPipe",
    "properties": [
    {
    "name": "Database Driver Location(s)",
    "value": "${AUTH_JDBC_DRIVER_LOCATION}",
    "scope": {
    "name": "Database Connection Pool",
    "type": "CONTROLLER_SERVICE"
    }
    },
    {
    "name": "Database Driver Class Name",
    "value": "${AUTH_JDBC_DRIVER_CLASSNAME}",
    "scope": {
    "name": "Database Connection Pool",
    "type": "CONTROLLER_SERVICE"
    }
    },
    {
    "name": "Database Connection URL",
    "value": "${AUTH_JDBC_URL}",
    "scope": {
    "name": "Database Connection Pool",
    "type": "CONTROLLER_SERVICE"
    }
    },
    {
    "name": "Database User",
    "value": "${AUTH_JDBC_USER_NAME}",
    "scope": {
    "name": "Database Connection Pool",
    "type": "CONTROLLER_SERVICE"
    }
    },
    {
    "name": "Password",
    "value": "${AUTH_JDBC_USER_PASSWORD}",
    "scope": {
    "name": "Database Connection Pool",
    "type": "CONTROLLER_SERVICE"
    }
    }
    ]
    }
  3. POST http://\INGEST_HOST : INGEST_PORT/connectors/auth.reindex/upgrade avec le nouveau fichier JSON pour mettre à jour le connecteur avec votre personnalisation.
Personnalisez la propriété et la configuration des composants par défaut/existants (mise à jour)
Modifiez les propriétés et la configuration des groupes de processus, des processeurs, des connexions et des services de contrôleur. Pour effectuer ces modifications, placez le fichier JSON du descripteur de mise à jour dans le conteneur du dossier (/profile/apps/search-ingest.ear/search-ingest.war/WEB-INF/classes/deployments/customization). Sur cette base, l'API de services Ingest de recherche exécute automatiquement la mise à jour de l'API avec ce JSON de descripteur de mise à jour fourni pour personnaliser la propriété et la configuration des connecteurs Ingest par défaut.
Note: Pour plus d'informations sur la création d'un fichier JSON de descripteur de mise à jour, voir Mise à jour du groupe de processus NiFi, du processeur, du service de contrôleur à l'aide du descripteur de connecteur Ingest

Gérer les personnalisations

Pour conserver les personnalisations et déployer d'autres environnements avec des personnalisations, vous devez :
  • Mettre à niveau le corps JSON ou mettre à jour le corps JSON en fonction des personnalisations que vous effectuez (modification de la structure ou modification de la configuration et des propriétés).
    Note: La mise à niveau de l'API peut également exécuter la fonctionnalité de mise à jour de l'API
  • Pour mettre à jour l'API, assurez-vous que le canal et la propriété existent dans le groupe de processus, le processeur, la connexion et le service de contrôleur.
  • Pour mettre à niveau l'API, assurez-vous que le canal est ajouté au registre.
Warning: Tout le traitement du service Ingest dans NiFi doit être terminé avant de lancer l'API de mise à niveau afin de mettre à niveau les groupes de processus de pipeline (flux de données). NiFi ne doit afficher aucune donnée en file d'attente, indiquée par "0 / 0 bytes" dans la barre d'état de l'interface utilisateur de NiFi. Les processus de service Ingest peuvent être autorisés à se terminer ou annulés à l'aide du nœud final "cancel" d'Ingest Connectors, comme décrit dans Gestion des connecteurs dans le service Ingest.

Si l'API de mise à niveau a été exécutée avec des données en file d'attente ou des processus de service Ingest en cours d'exécution et que la barre d'état de l'interface utilisateur NiFi indique des composants non valides, le processus de mise à niveau échouera. La file d'attente doit être effacée en localisant les groupes de processus dans le pipeline qui dispose de données de fichier de flux en file d'attente. Arrêtez les groupes de processus qui ont des données en file d'attente. Pour plus d'informations, voir Arrêt d'un composant.

Une fois le groupe de processus arrêté, cliquez avec le bouton droit de la souris sur le groupe de processus et cliquez sur Vider toutes les files d'attente. Une fois que les files d'attente ont été effacées pour le pipeline, réexécutez l'API de mise à niveau pour le connecteur associé au pipeline. Par exemple,
/connectors/auth.reindex/upgrade

Déplacer des personnalisations d'une version à l'autre

Déploiement de Kubernetes

Le script de déploiement vérifie la version des images NiFi. S'il correspond, le PV Nifi n'est pas supprimé. S'il ne correspond pas, le PV NiFi est effacé. Lorsque le PV est effacé, toutes les personnalisations réalisées sur la version précédente sont également effacées.

Lorsque toutes les personnalisations qui sont réalisées sur la version précédente sont effacées :
  • Toute personnalisation liée à la structure doit être effectuée à nouveau manuellement en suivant le processus mentionné à la section Personnalisations.
  • Toutes les personnalisations liées à la propriété et à la configuration peuvent être réalisées automatiquement à l'aide d'Ingest :
    1. Démarrez le service Docker Ingest.
    2. Déplacez le JSON de descripteur de mise à jour à l'intérieur du conteneur. /profile/apps/search-ingest.ear/search-ingest.war/WEB-INF/classes/deployments/customization
    3. Validez le conteneur pour créer une image personnalisée.
    4. Utilisez le script de déploiement normal avec une balise d'image Ingest personnalisée.