Gestion des connecteurs dans le service Ingest
Comment gérer vos descripteurs et connecteurs afin d'optimiser votre indexation de recherche pour Elasticsearch.
Les connecteurs sont utilisés pour ingérer des données dans le service HCL Commerce Search. Vous utilisez un descripteur de connecteur pour indiquer à NiFi comment combiner les différents canaux pour fabriquer le connecteur. La relation s'apparente aux concepts de "classe" et d'"objet" dans Java. Dans ce cas, un connecteur est comme un objet et un descripteur est comme une classe.
Pour plus d'informations sur l'appel du service Ingest, voir Rechercher l'API de service Ingest.
Affichage de tous les connecteurs
Le nœud final GET: /connectors peut être appelé pour obtenir les descripteurs de tous les connecteurs existants dans NiFi.
Affichage d'un connecteur spécifique
Le nœud final GET: /connectors/{id} peut être utilisé pour obtenir le descripteur du connecteur spécifié à l'aide de son ID de connecteur.
Si l'ID du connecteur n'est pas connu, le nœud final GET:/connectors peut être appelé pour renvoyer les descripteurs de tous les connecteurs. Vous pouvez ensuite parcourir cette liste pour trouver l'ID du connecteur spécifique que vous recherchez.
Création d'un connecteur
Pour obtenir des instructions détaillées sur la création de connecteurs, y compris des exemples et des illustrations, voir Création d'un connecteur de service NiFi.
Activation d'un connecteur
Le nœud final POST /connectors/{id}/enable peut être utilisé pour démarrer tous les canaux contenus dans le connecteur spécifié.
Désactivation d'un connecteur
Le nœud final POST /connectors/{id}/disable peut être utilisé pour arrêter tous les canaux contenus dans le connecteur spécifié.
Mise à niveau d'un connecteur
Le nœud final POST: /connectors/{id}/upgrade peut être utilisé pour mettre à niveau des connecteurs individuels.
Si l'ID du connecteur à mettre à niveau n'est pas connu, le nœud final GET: /connectors peut être utilisé pour obtenir tous les descripteurs. Vous pouvez ensuite rechercher le connecteur souhaité pour identifier son ID.
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.
/connectors/auth.reindex/upgradeMettre à niveau le connecteur actuel avec la version la plus récente des canaux
Il peut y avoir des cas où un connecteur est déjà défini, mais où les canaux de ce connecteur ont été modifiés (Le connecteur a les mêmes canaux, mais le contenu des canaux du registre ont été mis à jour).
Dans ce cas, le nœud final POST: /connectors/{id}/upgrade peut être appelé pour mettre à jour le connecteur actuel avec la dernière version des canaux.
Recréer les connecteurs en fonction du nouveau registre
Vous pouvez utiliser ce nœud final pour recréer des connecteurs en fonction du nouveau registre. Si le volume persistant est activé pour NiFi, il stocke les connecteurs dans un fichier flow.xml avec les éléments registryId et flowId liés à cette version du registre. Lors de la modification des versions, un nouveau registre est extrait et déployé pour recréer les connecteurs en fonction du nouveau registre. Les canaux doivent être correctement liés au registre pour que les connecteurs soient reconstruits. Lorsque NiFi démarre, il crée les connecteurs en fonction de flow.xml. Si les canaux dans les connecteurs n'ont pas les éléments registryId et flowId corrects qui correspondent au nouveau registre, cela provoquera des problèmes, car les ID ne correspondent pas. NiFi ne pourra pas exécuter l'index correctement. Pour éviter cela, les canaux doivent être correctement liés au registre afin que l'API de mise à niveau puisse reconstruire le connecteur.
Personnaliser les connecteurs
Vous pouvez utiliser ce point d'extrémité pour la personnalisation. Lorsque l'API de mise à niveau est appelée avec l'ID/nom du connecteur spécifié (par exemple, auth.reindex), elle supprime le connecteur existant dans NiFi et le recrée à l'aide du fichier ConnectorDescriptorJson fourni ou ConnectorDescriptorJson stocké dans Zookeeper. Si le corps de la requête est vide, il utilise le fichier ConnectorDescriptorJson qui est stocké dans Zookeeper. Lorsqu'un corps est fourni avec l'API, il l'utilise pour créer le connecteur, puis le stocker dans Zookeeper. Cela vous permet d'effectuer les personnalisations sur le ConnectorDescriptorJson par défaut en ajoutant ou en supprimant des canaux et en modifiant la structure du connecteur. Cette commande est recommandée si vous souhaitez conserver les personnalisations dans la version. Pour plus d'informations, voir Extension du service Ingest.
Exemple :
Ajout de 2 canaux "UploadPriceStage1" au connecteur auth.price existant.
{
"id": "auth.price",
"name": "auth.price",
"description": "This is the connector for the contract price indexing pipeline to perform incremental updates. This operation involves only the Product indexing pipeline.",
"created": "2020-11-17T12:55:36.949",
"modified": "2020-11-17T12:55:36.949",
"pipes": [
{
"name": "NRTLink",
"properties": [
{
"name": "connector.name",
"value": "auth.price",
"scope": {
"name": "NRTLink",
"type": "PROCESS_GROUP"
}
},
{
"name": "pipe.name",
"value": "NRTLink",
"scope": {
"name": "NRTLink",
"type": "PROCESS_GROUP"
}
}
]
},
{
"name": "UploadPriceStage1",
"properties": [
{
"name": "connector.name",
"value": "auth.price",
"scope": {
"name": "UploadPriceStage1",
"type": "PROCESS_GROUP"
}
},
{
"name": "pipe.name",
"value": "UploadPriceStage1",
"scope": {
"name": "UploadPriceStage1",
"type": "PROCESS_GROUP"
}
}
]
},
{
"name": "Terminal",
"properties": [
{
"name": "connector.name",
"value": "auth.price",
"scope": {
"name": "Terminal",
"type": "PROCESS_GROUP"
}
},
{
"name": "pipe.name",
"value": "Terminal",
"scope": {
"name": "Terminal",
"type": "PROCESS_GROUP"
}
}
]
}
]
}
{
"id": "auth.price",
"name": "auth.price",
"description": "This is the connector for the contract price indexing pipeline to perform incremental updates. This operation involves only the Product indexing pipeline.",
"pipes": [
{
"name": "NRTLink",
"properties": [
{
"name": "connector.name",
"value": "auth.price",
"scope": {
"name": "NRTLink",
"type": "PROCESS_GROUP"
}
},
{
"name": "pipe.name",
"value": "NRTLink",
"scope": {
"name": "NRTLink",
"type": "PROCESS_GROUP"
}
}
]
},
{
"name": "UploadPriceStage1",
"properties": [
{
"name": "connector.name",
"value": "auth.price",
"scope": {
"name": "UploadPriceStage1",
"type": "PROCESS_GROUP"
}
},
{
"name": "pipe.name",
"value": "UploadPriceStage1",
"scope": {
"name": "UploadPriceStage1",
"type": "PROCESS_GROUP"
}
}
]
},
{
"name": "UploadPriceStage1",
"properties": [
{
"name": "connector.name",
"value": "auth.price",
"scope": {
"name": "UploadPriceStage1",
"type": "PROCESS_GROUP"
}
},
{
"name": "pipe.name",
"value": "UploadPriceStage1",
"scope": {
"name": "UploadPriceStage1",
"type": "PROCESS_GROUP"
}
}
]
},
{
"name": "UploadPriceStage1",
"properties": [
{
"name": "connector.name",
"value": "auth.price",
"scope": {
"name": "UploadPriceStage1",
"type": "PROCESS_GROUP"
}
},
{
"name": "pipe.name",
"value": "UploadPriceStage1",
"scope": {
"name": "UploadPriceStage1",
"type": "PROCESS_GROUP"
}
}
]
},
{
"name": "Terminal",
"properties": [
{
"name": "connector.name",
"value": "auth.price",
"scope": {
"name": "Terminal",
"type": "PROCESS_GROUP"
}
},
{
"name": "pipe.name",
"value": "Terminal",
"scope": {
"name": "Terminal",
"type": "PROCESS_GROUP"
}
}
]
}
]
}
Mise à niveau de la version de lot pour les canaux
Pour utiliser la dernière version de vos composants Ingest, l'approche privilégiée consiste à mettre à niveau vos pipelines à l'aide du menu contextuel Version dans l'éditeur NiFi. Si vous souhaitez mettre à jour tous vos connecteurs, voir Mise à niveau de la version de lot pour les canaux.
Annulation d'un connecteur
POST: /connectors/{id}/cancel. Cela efface toutes les opérations Ingest qui sont en cours. Ce point d'extrémité est également utile lorsque l'index est bloqué au milieu du connecteur et que vous souhaitez redémarrer. Ce point d'extrémité arrête le connecteur spécifié et le service de routage. Il arrête le connecteur à l'aide de l'ID fourni (nom du connecteur). Par exemple, auth.reindex. Il examine ensuite chaque canal du connecteur et examine toutes les connexions. Une fois qu'il trouve une connexion avec des données en file d'attente, une API de demande de suppression est appelée pour effacer la file d'attente dans cette connexion.Suppression d'un connecteur
Vous pouvez supprimer un connecteur en appelant le nœud final DELETE: /connectors/{id}. Si vous ne connaissez pas l'ID du connecteur à supprimer, vous pouvez appeler le nœud final GET: /connectors pour découvrir tous les descripteurs. Vous pouvez ensuite localiser le connecteur souhaité et lire son ID.