Mapping -> Champs invalide -> ignorer le champ


(Stéphane) #1

Hello,

J'ai crée un mapping qui permet de typer un champ JSON string vers un type double, comme suit:

{
  "mappings": {
    "events": {
      "properties": {
        "@fields": {
          "properties": {
            "gzip_ratio": {
              "type": "double"
            },
    [...]
}

Lorsque je reçois un JSON comme ceci tout va bien:

{
  "@timestamp": "2015-11-23T09:25:08+00:00",
  "@fields": {
    "gzip_ratio": "0.80",

    [...]    
}

Mais lorsque le champ n'est pas pertinent, je recois ceci:

{
  "@timestamp": "2015-11-23T09:25:08+00:00",
  "@fields": {
    "gzip_ratio": "-",

    [...]    
}

ES ne peut pas appliquer le mapping "-" vers un double et le JSON est ignoré.

Est-il possible d'indiquer à ES d'ignorer seulement le champ invalide plutôt que tout le JSON ?

Merci


(David Pilato) #2

L'idéal serait de traiter ça en amont et ne pas fournir le champ quand il n'y a pas de valeur.

Sinon tu peux utiliser ignore_malformed: https://www.elastic.co/guide/en/elasticsearch/reference/current/ignore-malformed.html


(Stéphane) #3

En effet l'idéal serait bien-sûr d'éviter d'envoyer des champs non conformes. Ce n'est pas toujours facile de faire collaborer des outils qui ne se connaissent pas du tout. En tout cas merci pour cette très bonne réponse !


(system) #4