Filebeat utilise des template de mapping (pour chaque version de filebeat, un nouveau template est créé)
Donc l'index créé tous les jours par filebeat a un mapping qui provient de ce template
Il y a beaucoup de champs défini qui proviennent de la déclaration de tous les modules filebeat (https://github.com/elastic/beats/blob/master/filebeat/module/nginx/access/_meta/fields.yml)
Si on a besoin de déclarer de nouveaux champs, on peut créer son propre template qui va matcher aussi les index filebeat-* et qui va surcharger les templates de filebeat
Alternative : on peut vérifier que le champs n'existe pas déjà dans les champs prédéfini de filebeat. Par exemple le $status de nginx (code retour http) correspond au champs http.response.status_code
Il suffit que le json écrit par nginx ait une clé qui correspond pour le status pour avoir le bon mapping
https://www.elastic.co/guide/en/beats/filebeat/master/configuration-template.html
Exemple pour le field 'status' :
for index in $(cat liste_index); do echo $index; curl -s http://elastic/$index/_mapping | jq ".\"$index\".mappings.doc.properties.status"; done