RousselTMLEARNING

Observabilité

Mappings et analyse de texte Elasticsearch : types de champs, analyseurs et mapping dynamique

Maîtriser les mappings Elasticsearch : types de champs (text, keyword, numériques, date, ip, nested), multi-fields, mapping dynamique et strict, runtime fields, analyseurs, tokenizers, filtres et analyseur français.

1. Les types de champs #

Le bon type pour le bon usage.

Types #

TypePourExemple
textRecherche plein texte (analysé)Description d'un produit
keywordFiltres, tris, agrégations (valeur exacte)Code pays, statut, identifiant
long, double, scaled_floatCalculs, plagesPrix, durée
dateSéries temporelles@timestamp
ip, geo_pointAdresses IP (plages CIDR), positionsclient.ip, location
nestedTableaux d'objets interrogés objet par objetLignes d'une commande
PUT products
{
  "mappings": {
    "dynamic": "strict",
    "properties": {
      "name":  { "type": "text", "analyzer": "french", "fields": { "raw": { "type": "keyword" } } },
      "sku":   { "type": "keyword" },
      "price": { "type": "scaled_float", "scaling_factor": 100 },
      "lines": { "type": "nested", "properties": { "sku": { "type": "keyword" }, "qty": { "type": "integer" } } }
    }
  }
}
Erreur Courante : Le mapping dynamique devine les types au premier document : une chaîne devient text + keyword, un nombre écrit entre guillemets reste une chaîne. En production, définissez les mappings dans des templates et utilisez dynamic: strict ou runtime.

2. L'analyse de texte #

Ce qui est vraiment indexé.

Analyseurs #

Chaîne d'analyse d'un champ text
POST _analyze
{ "analyzer": "french", "text": "L'été arrive, les arrivées sont prévues." }

PUT articles
{
  "settings": {
    "analysis": {
      "analyzer": {
        "fr_custom": { "tokenizer": "standard",
                       "filter": [ "lowercase", "asciifolding", "french_elision", "french_stop", "french_stemmer" ] }
      },
      "filter": {
        "french_elision": { "type": "elision", "articles_case": true, "articles": ["l", "d", "j", "qu", "c", "n", "s", "t", "m"] },
        "french_stop":    { "type": "stop", "stopwords": "_french_" },
        "french_stemmer": { "type": "stemmer", "language": "light_french" }
      }
    }
  }
}
Bonne Pratique : Testez toujours un analyseur avec _analyze sur de vraies phrases : c'est le moyen le plus rapide de comprendre pourquoi une recherche ne trouve pas un document.

Articles liés

Transforms et enrich : résumer et enrichir les données dans Elasticsearch

Créer des index centrés sur les entités avec les transforms pivot et latest, et enrichir les documents à l'in…

OpenTelemetry et Elasticsearch : compatibilité et architecture

Envoyer de l'OpenTelemetry vers Elasticsearch : Collector et exportateur elasticsearch, endpoint OTLP géré, A…

Ingérer des logs OpenTelemetry dans Elasticsearch

Collecter et structurer des logs avec le Collector OpenTelemetry (receiver filelog, opérateurs, processeur tr…

Pour aller plus loin

Soutenir

♥ SOUTENIR

Soutenez RousselTM Learning

Les formations, articles, TP et attestations restent gratuits et sans publicité intrusive. Une contribution libre, du montant de votre choix, finance l’hébergement, les environnements de TP et l’écriture de nouveaux contenus.

Contribuer avec PayPal Montant libre · carte bancaire ou compte PayPalEn savoir plus
QR code PayPal
Ou scannez ce QR code avec votre téléphone

Merci, chaque contribution compte !