Recherche élastique

Elasticsearch Reindex Changer le type de champ

Elasticsearch Reindex Changer le type de champ

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, vous devrez peut-être arrêter 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 puissantes fonctionnalités d'Elasticsearch telles que la réindexation, les nœuds d'ingestion, les pipelines et les processeurs pour rendre ces tâches très faciles.

Ce tutoriel vous montrera comment changer un type de champ dans un index spécifique en un autre, à l'aide des nœuds Elasticsearch Ingest. L'utilisation de cette approche éliminera les temps d'arrêt qui affectent les services tout en parvenant à effectuer les tâches de changement de type de champ.

Introduction aux nœuds d'ingestion

Le nœud d'ingestion d'Elasticsearch vous permet de pré-traiter les documents avant leur indexation.

Un nœud Elasticsearch est une instance spécifique d'Elasticsearch ; les nœuds connectés (plus d'un) forment un seul cluster.

Vous pouvez afficher les nœuds disponibles dans le cluster en cours d'exécution avec la requête :

GET /_nodes/

La commande cURL pour cela 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) :


"_nodes" :
"total" : 3,
"réussi" : 3,
"échec" : 0
,
"cluster_name" : "22e0bee6ef91461d82d9b0f1b4b13b4a",
"nœuds" :
"gSlMjTKyTemoOX-EO7Em4w" :
"nom" : "instance-0000000003",
"adresse_transport" : "172.28.86.133:19925",
"hôte" : "172.28.86.133",
"ip" : "172.28.86.133",
"version" : "7.dix.2",
"build_flavor": "default",
"build_type" : "docker",
"build_hash": "747e1cc71def077253878a59143c1f785afa92b9",
"total_indexing_buffer" : 214748364,
"les rôles" : [
"Les données",
"données_froid",
"contenu_données",
"data_hot",
"data_warm",
"ingérer",
"Maître",
"remote_cluster_client",
"transformer"
],
"les attributs" :
"zone_de_disponibilité_logique" : "zone-0",
"nom_serveur" : "instance-0000000003.22e0bee6ef91461d82d9b0f1b4b13b4a",
"availability_zone" : "us-west-1c",
"xpack.installé" : "vrai",
"instance_configuration": "aws.Les données.haute.i3",
"transformer.nœud" : "vrai",
"région" : "us-west-1"
,
"Les paramètres" :
"s3" :
"client" :
"elastic-internal-22e0be" :
"endpoint" : "s3-us-west-1.amazones.com"


,
--------------------------------sortie tronquée---------------------

Par défaut, tous les nœuds Elasticsearch permettent l'ingestion et sont capables de gérer les opérations d'ingestion. Cependant, pour les opérations d'ingestion lourdes, 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 des préprocesseurs.

Les préprocesseurs sont des ensembles d'instructions enroulés autour d'un pipeline et sont exécutés un à la fois.

Voici la syntaxe générale de la définition d'un pipeline :


"description" : "Convertissez-moi",
"processeurs" : [
"convertir" :
"champ" : "identifiant",
"type": "entier"
]

La propriété description indique ce que le pipeline doit atteindre. Le paramètre suivant est les préprocesseurs, transmis sous forme de liste dans l'ordre de leur exécution.

Créer un pipeline de conversion

Pour créer un pipeline que nous utiliserons pour convertir un type, utilisez la requête PUT avec le point de terminaison d'API _ingest comme :

PUT _ingest/pipeline/convert_pipeline

« description » : « convertit le champ dayOfWeek en un entier long de »,
"processeurs" : [

"convertir" :
"champ" : "dayOfWeek",
"type": "long"


]

Pour cURL, utilisez la commande :

curl -XPUT "http://localhost:9200/_ingest/pipeline/convert_pipeline" -H 'Content-Type: application/json' -d'  "description": "convertit le champ dayOfWeek en un entier long à partir d'un entier",  " processeurs" : [          "convert" :         "field" : "dayOfWeek",        "type": "long"            ]'

Réindexer et convertir Taper

Une fois que nous avons le pipeline dans le nœud d'ingestion, tout ce que nous avons à faire est d'appeler l'API d'indexation et de passer le pipeline en tant qu'argument dans la destination du corps de la requête sous la forme :

POST_réindexation

"la source":
"index": "kibana_sample_data_flights"
,
"destin":
"index": "kibana_sample_type_diff",
"pipeline": "convert_pipeline"

Pour cURL :

curl -XPOST "http://localhost:9200/_reindex" -H 'Content-Type: application/json' -d'  "source":     "index": "kibana_sample_data_flights"  ,  "dest":     "index ": "kibana_sample_type_diff",    "pipeline": "convert_pipeline"  '

 Vérifier la conversion

Pour vérifier que le pipeline s'est appliqué correctement, utilisez la requête GET pour récupérer ce champ spécifique en tant que :

GET /kibana_sample_data_flights/_mapping/field/dayOfWeek
GET /kibana_sample_type_diff/_mapping/field/dayOfWeek

Cela devrait renvoyer les données sous la forme :

-----------------------INDEX D'ORIGINE---------------------------

"kibana_sample_data_flights" :
"mappages" :
"jour de la semaine" :
"full_name" : "dayOfWeek",
"cartographie" :
"jour de la semaine" :
"type" : "entier"






-------------------------DONNÉES RÉINDEXÉES-------------------------------

"kibana_sample_type_diff" :
"mappages" :
"jour de la semaine" :
"full_name" : "dayOfWeek",
"cartographie" :
"jour de la semaine" :
"type" : "long"





Conclusion

Dans ce guide, nous avons vu comment travailler avec les nœuds Elasticsearch Ingest pour pré-traiter les documents avant l'indexation, convertissant ainsi un champ d'un type à un autre.

Consultez la documentation pour en savoir plus.

https://www.élastique.co/guide/fr/elasticsearch/reference/master/ingest.html

Comment installer et jouer à Doom sur Linux
Introduction à Doom La série Doom est née dans les années 90 après la sortie du Doom original. Ce fut un succès instantané et à partir de ce moment-là...
Vulkan pour les utilisateurs Linux
Avec chaque nouvelle génération de cartes graphiques, nous voyons les développeurs de jeux repousser les limites de la fidélité graphique et se rappro...
OpenTTD contre Simutrans
Créer votre propre simulation de transport peut être amusant, relaxant et extrêmement attrayant. C'est pourquoi vous devez vous assurer que vous essay...