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
- toute valeur dont le nom commence par un 'k' soit considéré comme un KEYWORD
- toute valeur dont le nom commence par un 's' soit considéré comme un TEXT
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" } } } ] }
Vous pourriez laisser un commentaire si vous étiez connecté.