Agrégation - Demande aide

Bonjour,

Pour un projet, mes requêtes d'agrégation ne me renvoient pas toutes les valeurs attendues et je n'arrive pas à comprendre pourquoi, si quelqu'un a une idée ou une piste à me communiquer :wink:
L'index et les requêtes sont simples mais pourtant impossible de m'en sortir.

Index :

{
  "my-index" : {
    "mappings" : {
      "properties" : {
        "marque" : {
          "type" : "text",
          "store" : true,
          "fields" : {
            "keyw" : {
              "type" : "keyword"
            }
          },
          "analyzer" : "standard",
          "fielddata" : true
        },
        "nom" : {
          "type" : "text",
          "store" : true,
          "analyzer" : "standard"
        },
        "reference" : {
          "type" : "text",
          "store" : true,
          "analyzer" : "standard"
        }
      }
    }
  }
}

Query

GET my-index/_search
{
  "query": {
    "match_all": {}
  },
  "aggs": {
    "marques": {
      "terms": {
        "field": "marque.keyw",
        "order": {
          "_key": "asc"
        },
        "size": 50
      }
    }
  }  
}

Result

{
  "took" : 3,
  "timed_out" : false,
  "_shards" : {
    "total" : 1,
    "successful" : 1,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : {
      "value" : 2,
      "relation" : "eq"
    },
    "max_score" : 1,
    "hits" : [
      {
        "_index" : "my-index",
        "_type" : "_doc",
        "_id" : "doc-797282",
        "_score" : 1,
        "_source" : {
          "nom" : "Produit 2",
          "reference" : "Ref 2",
          "marque" : "MTD",
        }
      },
      {
        "_index" : "my-index",
        "_type" : "_doc",
        "_id" : "doc-414998",
        "_score" : 1,
        "_source" : {
          "nom" : "Produit 1",
          "reference" : "Ref 1",
          "marque" : "PORTABLE WINCH",
        }
      }
    ]
  },
  "aggregations" : {
    "marques" : {
      "doc_count_error_upper_bound" : 0,
      "sum_other_doc_count" : 0,
      "buckets" : [
        {
          "key" : "PORTABLE WINCH",
          "doc_count" : 1
        }
      ]
    }
  }
}

Merci d'avance

Bonjour :wave:t3:

Quelles valeurs autres espères tu ?

Je suppose que c'est une typo : marque.keyw?

Bonjour,

Dans la logique, je devrais avoir la marque "MTD" dans les agrégations.
J'ai 2 documents avec 2 marques différentes, pourquoi une des 2 ne remonte pas, c'est un grand mystère.

Cdlt

J'ai l'impression que sur ton index, tu as que 2 documents. c'est bien ça ?

En effet. Mais je pense que ton exemple n'est pas complet. Les JSON source ne sont pas valables je pense.

Bref, j'ai fait ceci :

DELETE my-index
POST my-index/_doc
{
  "nom": "Produit 2",
  "reference": "Ref 2",
  "marque": "MTD"
}
POST my-index/_doc
{
  "nom" : "Produit 1",
  "reference" : "Ref 1",
  "marque" : "PORTABLE WINCH"
}
GET my-index/_search
{
  "size": 0,
  "aggs": {
    "marque": {
      "terms": {
        "field": "marque.keyword"
      }
    }
  }
}

Et ça donne bien le résultat:

{
  "took": 2,
  "timed_out": false,
  "_shards": {
    "total": 1,
    "successful": 1,
    "skipped": 0,
    "failed": 0
  },
  "hits": {
    "total": {
      "value": 2,
      "relation": "eq"
    },
    "max_score": null,
    "hits": []
  },
  "aggregations": {
    "marque": {
      "doc_count_error_upper_bound": 0,
      "sum_other_doc_count": 0,
      "buckets": [
        {
          "key": "MTD",
          "doc_count": 1
        },
        {
          "key": "PORTABLE WINCH",
          "doc_count": 1
        }
      ]
    }
  }
}

Si tu n'y arrives toujours pas, essaye de fournir un exemple comme le mien qui reproduit ton problème exact.

Après maintes recherches, j'ai fini par trouver mon problème.

Le mapping est OK, la requête est OK, le document ne renvoyant pas de bucket est NOK.
Il y a quelques temps j'ai fait évoluer le mapping pour ajouter le champ de type keyword pour les agrégations. J'avais réindexé par code toute ma base de données.
Je me rend compte aujourd'hui que le mécanisme d'update de document par le connecteur PHP ne met pas à jour correctement mon subfield.
J'ai forcé la réindexation "pure" (donc écrasement du document) et cette fois ci l'agrégation ressort correctement les informations.

C'est un comportement étrange, je vais de ce pas supprimer tous les mécanismes d'update que je peux avoir pour forcer la reindexation correcte des documents.

Désolé pour vous avoir fait perdre votre temps.