Travailler avec des bases de données est très amusant, mais peut parfois être difficile, surtout lorsqu'il s'agit de données déjà existantes.
Par exemple, si vous souhaitez modifier le type d'un champ spécifique, cela pourrait vous obliger à retirer le service, ce qui peut avoir de graves répercussions, en particulier dans les services qui traitent de grandes quantités de données.
Heureusement, nous pouvons utiliser les fonctionnalités puissantes d'Elasticsearch telles que la réindexage, ingérer des nœuds, des pipelines et des processeurs pour rendre ces tâches très faciles.
Ce tutoriel vous montrera comment modifier un type de champ dans un index spécifique vers un autre, en utilisant les nœuds Elasticsearch Ingest. L'utilisation de cette approche éliminera les temps d'arrêt qui affectent les services tout en réussissant à effectuer les tâches de changement de type de champ.
Introduction à ingérer des nœuds
Le nœud d'ingestion d'Elasticsearch vous permet de prétraiter des documents avant leur indexation.
Un nœud Elasticsearch est une instance spécifique d'Elasticsearch; Les nœuds connectés (plus d'un) font un seul cluster.
Vous pouvez afficher les nœuds disponibles dans le cluster en cours d'exécution avec la demande:
Get / _nodes /La commande curl pour ceci est:
curl -xget “http: // localhost: 9200 / _nodes /”L'exécution de cette commande devrait vous donner des informations massives sur les nœuds, comme indiqué ci-dessous (sortie tronquée):
Par défaut, tous les nœuds Elasticsearch permettent d'ingérer et sont capables de gérer les opérations d'ingestion. Cependant, pour les opérations de forte ingestion, vous pouvez créer un seul nœud dédié à l'ingestion uniquement.
Pour gérer PRE_PROCESS, avant d'indexer les documents, nous devons définir un pipeline qui indique la série PRÉPROCESSEURS.
Les préprocesseurs sont des ensembles d'instructions enroulés autour d'un pipeline et sont exécutés un à la fois.
Ce qui suit est la syntaxe générale de la façon de définir un pipeline:
La propriété description dit ce que le pipeline doit réaliser. Le paramètre suivant est les préprocesseurs, transmis comme une liste dans l'ordre de leur exécution.
Créer un pipeline de converti
Pour créer un pipeline que nous utiliserons pour convertir un type, utilisez la demande de put avec le point de terminaison de l'API le plus _inge:
Mettez _ingest / pipeline / convert_pipelinePour Curl, utilisez la commande:
curl -xput "http: // localhost: 9200 / _ingest / pipeline / convert_pipeline" -h 'contenu-type: application / json' -d '"description": "convertit le champ dayofweek en un long de entier", " processeurs ": [" converti ": " champ ":" dayofweek "," type ":" long "] 'Reindex et convertir Taper
Une fois que nous avons le pipeline dans le nœud Ingest, tout ce que nous devons faire est d'appeler l'API d'indexation et de passer le pipeline comme argument dans le dest du corps de demande:
Post _reindexPour Curl:
curl -xpost "http: // localhost: 9200 / _reindex" -h 'contenu-type: application / json' -d '"source": "index": "kibana_sample_data_flights", "dest": "index ":" kibana_sample_type_diff "," pipeline ":" convert_pipeline " 'Vérifiez la conversion
Pour vérifier que le pipeline s'est appliqué correctement, utilisez la demande GET pour récupérer ce champ spécifique comme:
Get / kibana_sample_data_flights / _mapping / champ / dayofweekCela devrait renvoyer les données comme:
-----------------------Index d'origine---------------------------Conclusion
Dans ce guide, nous avons examiné comment travailler avec Elasticsearch Ingest les nœuds en documents pré-processus avant d'indexer, convertissant ainsi un champ d'un type à un autre.
Considérez la documentation pour en savoir plus.
https: // www.élastique.co / guide / en / elasticsearch / référence / maître / ingestion.html