Définition d'un modèle d'index
Un modèle d'index dans Elasticsearch sert à préconfigurer les paramètres (settings) et les mappings pour des index futurs. Il est particulièrement adopté aux scénarios de séries temporelles, où des index sont générés périodiquement, permettant ainsi de standardiser leur configuration sans répétition.
Composition d'un modèle
Chaque modèle inclut deux éléments clés :
- Settings : Configuration technique comme le nombre de shards, replicas, et politiques de rafraîchissement.
- Mappings : Structure des documents, définissant les types de champs et leurs propriétés.
Les mapings incluent souvent des paramètres tels que _source pour le stockage des données brutes, et properties pour spécifier chaque champ. Notez que le champ _all est déprécié depuis ES 6.0 ; il est remplacé par l'utilisation de copy_to pour des fonctionnalités similaires.
Création d'un modèle
Voici des exemples adaptés pour différentes versions d'Elasticsearch, avec des noms et structures modifiés pour la démonstration.
Pour les versions antérieures à ES 6.0 :
PUT _template/template_produit_legacy
{
"template": "produit*",
"order": 1,
"settings": {
"number_of_shards": 3
},
"mappings": {
"_default": {
"_source": { "enabled": false },
"_all": { "enabled": false },
"dynamic": "strict"
},
"type_principal": {
"_source": { "enabled": false },
"properties": {
"date_creation": {
"type": "date",
"format": "yyyy-MM-dd HH:mm"
},
"edition": {
"type": "string",
"index": "not_analyzed"
},
"catégorie": {
"type": "keyword"
}
}
}
}
}
Pour ES 6.0 et versions ultérieures :
PUT _template/template_produit_actuel
{
"index_patterns": ["produit*", "item*"],
"order": 1,
"settings": {
"number_of_shards": 3
},
"mappings": {
"_doc": {
"_source": { "enabled": false },
"properties": {
"date_creation": {
"type": "date",
"format": "yyyy-MM-dd HH:mm"
},
"edition": {
"type": "text",
"index": false
},
"catégorie": {
"type": "keyword"
}
}
}
}
}
Gestion des modèles
Pour afficher les modèles existants, exécutez des requêtes GET avec des filtres si nécessaire. Pour vérifier la présence d'un modèle spécifique, utilisez une requête HEAD. La suppression se fait via une requête DELETE ; en cas d'absence, Elasticsearch renverra une erreur 404.
Recommandations pratiques
- Depuis ES 6.0, chaque index ne peut contenir qu'un seul type de document, en utilisant par défaut
_doc. - Désactivez
_sourcesi les données originales ne sont pas requises pour les recherches, ce qui réduit l'utilisation de l'espace disque. - Évitez le champ
_allet implémentez une alternative aveccopy_topour améliorer les performances de recherche. - Appliquez
"dynamic": "strict"pour les données structurées afin de prévenir l'ajout automatique de champs indésirables. - Utilisez le type
keywordpour les champs nécessitant des correspondances exactes, offrant une meilleure efficacité et réduisant le stockage.