Elasticsearch - IngestNode

index.blocks.read_only 1 vrai / faux Défini sur true pour rendre les métadonnées d'index et d'index en lecture seule, false pour autoriser les écritures et les modifications de métadonnées.

Parfois, nous devons transformer un document avant de l'indexer. Par exemple, nous voulons supprimer un champ du document ou renommer un champ puis l'indexer. Ceci est géré par le nœud Ingest.

Chaque nœud du cluster peut être ingéré, mais il peut également être personnalisé pour être traité uniquement par des nœuds spécifiques.

Étapes impliquées

Il y a deux étapes impliquées dans le fonctionnement du nœud d'acquisition -

  • Créer un pipeline
  • Créer un document

Créer un pipeline

Commencez par créer un pipeline qui contient les processeurs, puis exécutez le pipeline, comme indiqué ci-dessous -

PUT _ingest/pipeline/int-converter
{
   "description": "converts the content of the seq field to an integer",
   "processors" : [
      {
         "convert" : {
            "field" : "seq",
            "type": "integer"
         }
      }
   ]
}

En exécutant le code ci-dessus, nous obtenons le résultat suivant -

{
   "acknowledged" : true
}

Créer un document

Ensuite, nous créons un document à l'aide du convertisseur de pipeline.

PUT /logs/_doc/1?pipeline=int-converter
{
   "seq":"21",
   "name":"Tutorialspoint",
   "Addrs":"Hyderabad"
}

En exécutant le code ci-dessus, nous obtenons la réponse comme indiqué ci-dessous -

{
   "_index" : "logs",
   "_type" : "_doc",
   "_id" : "1",
   "_version" : 1,
   "result" : "created",
   "_shards" : {
      "total" : 2,
      "successful" : 1,
      "failed" : 0
   },
   "_seq_no" : 0,
   "_primary_term" : 1
}

Ensuite, nous recherchons le document créé ci-dessus en utilisant la commande GET comme indiqué ci-dessous -

GET /logs/_doc/1

En exécutant le code ci-dessus, nous obtenons le résultat suivant -

{
   "_index" : "logs",
   "_type" : "_doc",
   "_id" : "1",
   "_version" : 1,
   "_seq_no" : 0,
   "_primary_term" : 1,
   "found" : true,
   "_source" : {
      "Addrs" : "Hyderabad",
      "name" : "Tutorialspoint",
      "seq" : 21
   }
}

Vous pouvez voir ci-dessus que 21 est devenu un entier.

Sans pipeline

Maintenant, nous créons un document sans utiliser le pipeline.

PUT /logs/_doc/2
{
   "seq":"11",
   "name":"Tutorix",
   "Addrs":"Secunderabad"
}
GET /logs/_doc/2

En exécutant le code ci-dessus, nous obtenons le résultat suivant -

{
   "_index" : "logs",
   "_type" : "_doc",
   "_id" : "2",
   "_version" : 1,
   "_seq_no" : 1,
   "_primary_term" : 1,
   "found" : true,
   "_source" : {
      "seq" : "11",
      "name" : "Tutorix",
      "Addrs" : "Secunderabad"
   }
}

Vous pouvez voir ci-dessus que 11 est une chaîne sans le pipeline utilisé.