Table des matières

Les Dynamic_templates dans le Mapping d'Elasticsearch

ATTENTION ce qui est ecrit sur cette page n'est pas parole d'evangile, ce sont des notes, en cours de test…

Ressources

Créer un Index est définir son Mappage en même temps

Dans l'exemple ci dessous on créé un index nommé test et on defini son mapping avec un Dynamic_tamplates de façon a ce que

J'ai volontairement alignés les {} et les [] car il y a une subtilité dans le tableau “dynamic_templates”

il doit etre sous la forme

"dynamic_templates": [ { "truc": {..} } , { "machin":{..} } ]

et NON PAS sous cette forme

"dynamic_templates": [ "truc": {..} , "machin":{..} ]

concentrez-vous sur les {}

[ { "truc": {..} } ] => [ "truc": {..} ]

Je me permet d'insister sur le point ci-dessus, parce j'en ai personnellement ch… à trouver d'ou venez cette erreur

“type”: “mapper_parsing_exception”,

“reason”: “A dynamic template must be defined with a name”

PUT test
{
  "mappings": 
  {
    "_doc": 
    {
      "dynamic_templates": 
      [
        {
          "keywords": 
          {
            "match": "k*",
            "mapping": 
            {
              "type": "keyword"
            }
          }
        },
        {
          "strings": 
          {
            "match": "s*",
            "mapping": 
            {
              "type": "text"
            }
          }
        }
      ]
    }
  }
}

Modifier un Dynamic_templates

Dans le cas ou un Dynamic_templates est déjà défini dans le mapping, pour le modifier on utilise le code suivant

Avec PUT %INDEX%/_mapping/%TYPE%

PUT test/_mapping/_doc
{
  "dynamic_templates": [
    {
      "keywords": {
        "match": "k*",
        "mapping": {
          "type": "text"
        }
      }
    }
  ]
}