1. Principe #
Un nom, plusieurs index.
Architecture #
- Un data stream est un nom logique (
logs-nginx-prod) pour des données horodatées en ajout seul ; il exige un champ@timestamp. - Il écrit dans un seul index de backing (
.ds-logs-nginx-prod-2026.10.20-000002) et lit dans tous. - Convention de nommage Elastic :
type-dataset-namespace(logs-nginx-prod,metrics-system-default).
2. Templates #
Réutiliser les définitions.
Création #
PUT _component_template/nginx-mappings
{ "template": { "mappings": { "properties": {
"@timestamp": { "type": "date" }, "source.ip": { "type": "ip" },
"http.response.status_code": { "type": "short" }, "url.path": { "type": "keyword" } } } } }
PUT _component_template/logs-settings
{ "template": { "settings": { "index.lifecycle.name": "logs-30d", "number_of_replicas": 1 } } }
PUT _index_template/logs-nginx
{ "index_patterns": [ "logs-nginx-*" ], "data_stream": {}, "priority": 200,
"composed_of": [ "nginx-mappings", "logs-settings" ],
"template": { "settings": { "index.default_pipeline": "nginx-access" } } }
PUT _data_stream/logs-nginx-prod # ou automatiquement au premier document
POST logs-nginx-prod/_rollover # forcer un nouvel index de backingBonne Pratique : Une modification de template ne s'applique qu'aux nouveaux index de backing : changez le template, puis forcez un rollover pour l'appliquer sans attendre.
Erreur Courante : La priorité des index templates départage les modèles qui se recouvrent : un template personnalisé logs-* de priorité basse peut être masqué par les templates intégrés d'Elastic (priorité 100). Donnez une priorité supérieure à 100 et des motifs précis.