# Children aggregation totalement fausse

**URL:** <https://discuss.elastic.co/t/children-aggregation-totalement-fausse/1470>\
**Category:** Discussions en français\
**Created:** [May 28, 2015, 1:20pm UTC](https://discuss.elastic.co/t/children-aggregation-totalement-fausse/1470 "2015-05-28T13:20:47Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![kaliseo](https://avatars.discourse-cdn.com/v4/letter/k/ce73a5/32.png) [@kaliseo](https://discuss.elastic.co/u/kaliseo)\
**Post date:** [May 28, 2015, 1:20pm UTC](https://discuss.elastic.co/t/children-aggregation-totalement-fausse/1470/1 "2015-05-28T13:20:47Z")

</div>

Bonjour à tous,

J'essaie de monter des requêtes relativement complexes sous ElasticSearch et de récupérer des aggregations a partir de ces dernières.

Autant le doc\_count des aggregations est bon, autant les buckets sont complètement faux.

Voici ma requête :

```
{
    "query": {
        "has_child": {
            "type": "transaction",
            "query": {
                "bool": {
                    "must": [
                        {
                            "term": {
                                "transaction.products.pid": "66130766378"
                            }
                        },
                        {
                            "range": {
                                "transaction.date": {
                                    "gt": "now-14d"
                                }
                            }
                        }
                    ],
                    "must_not": []
                }
            }
        }
    },
    "aggs": {
        "most_bought": {
            "children": {
                "type": "transaction"
            },
            "aggs": {
                "productFilter": {
                    "filter": {},
                    "aggs": {
                        "products": {
                            "terms": {
                                "field": "transaction.products.pid"
                            }
                        }
                    }
                }
            }
        }
    }
}

```

En gros, je demande, pour les utilisateurs qui ont acheté ce produit (has\_child), quels sont les produits achetés (aggs).

Voici le résultat que j'obtiens :

```
{
   "took":2,
   "timed_out":false,
   "_shards":{
      "total":5,
      "successful":5,
      "failed":0
   },
   "hits":{
      "total":5,
      "max_score":1,
      "hits":[
         {
            "_index":"twiga_v4",
            "_type":"user",
            "_id":"AU2aCDIqmTOfL8aT6oxI",
            "_score":1,
            "_source":{
               "cookies":[
                  "1432808336328698032885"
               ],
               "localuid":[

               ],
               "iplocation":[

               ],
               "date":"2015-05-28T10:19:14.637Z"
            }
         },
         {
            "_index":"twiga_v4",
            "_type":"user",
            "_id":"AU2aB5mbmTOfL8aT6ow2",
            "_score":1,
            "_source":{
               "cookies":[
                  "1432808296854342757903"
               ],
               "localuid":[

               ],
               "iplocation":[

               ],
               "date":"2015-05-28T10:18:45.792Z"
            }
         },
         {
            "_index":"twiga_v4",
            "_type":"user",
            "_id":"AU2aCbwamTOfL8aT6oxu",
            "_score":1,
            "_source":{
               "cookies":[
                  "1432808436584201734440"
               ],
               "localuid":[

               ],
               "iplocation":[

               ],
               "date":"2015-05-28T12:18:14.882Z"
            }
         },
         {
            "_index":"twiga_v4",
            "_type":"user",
            "_id":"AU2adbIVmTOfL8aT6pMD",
            "_score":1,
            "_source":{
               "cookies":[
                  "1432815512824511789572"
               ],
               "localuid":[

               ],
               "iplocation":[

               ],
               "date":"2015-05-28T12:19:28.764Z"
            }
         },
         {
            "_index":"twiga_v4",
            "_type":"user",
            "_id":"AU2aeluBmTOfL8aT6pNu",
            "_score":1,
            "_source":{
               "cookies":[
                  "1432815818378397089816"
               ],
               "localuid":[

               ],
               "iplocation":[

               ],
               "date":"2015-05-28T12:46:32.948Z"
            }
         }
      ]
   },
   "aggregations":{
      "most_bought":{
         "doc_count":5,
         "productFilter":{
            "doc_count":5,
            "products":{
               "doc_count_error_upper_bound":0,
               "sum_other_doc_count":0,
               "buckets":[
                  {
                     "key":"24143302320",
                     "doc_count":1
                  },
                  {
                     "key":"66130766378",
                     "doc_count":1
                  }
               ]
            }
         }
      }
   }
}

```

ElasticSearch me retourne 2 buckets (ils devrait y en avoit beaucoup plus), avec seulement 1 résultat pour chaque, alors que l'ID 66130766378 est présent 5 fois dans les types transactions. D'ailleurs, le comptage fait au niveau de l'aggregation productFilter est correct !

Quelqu'un a un retour d'expérience sur le sujet ?

En vous remerciant par avance.

---

<div class="post-metadata">

**Author:** ![kaliseo](https://avatars.discourse-cdn.com/v4/letter/k/ce73a5/32.png) [@kaliseo](https://discuss.elastic.co/u/kaliseo)\
**Post date:** [May 28, 2015, 1:31pm UTC](https://discuss.elastic.co/t/children-aggregation-totalement-fausse/1470/2 "2015-05-28T13:31:53Z")

</div>

J'ai trouvé une solution pour le moment, un peu tordue certes, mais qui fonctionne.

Au lieu d'utiliser Children Aggregation qui visiblement ne fonctionne pas très bien, j'ai appelé directement le type transaction en demandant, les parents des enfants qui contiennent tel ID produit :

```
{
    "query": {
        "has_parent": {
            "parent_type": "user",
            "query": {
                "has_child": {
                    "type": "transaction",
                    "query": {
                        "bool": {
                            "must": [
                                {
                                    "term": {
                                        "transaction.products.pid": "66130766378"
                                    }
                                },
                                {
                                    "range": {
                                        "transaction.date": {
                                            "gt": "now-14d"
                                        }
                                    }
                                }
                            ],
                            "must_not": []
                        }
                    }
                }
            }
        }
    },
    "aggs": {
        "products": {
            "terms": {
                "field": "transaction.products.pid"
            }
        }
    }
}

```

De cette manière, j'obtiens bien le résultat escompté :

```
{
   "took":1,
   "timed_out":false,
   "_shards":{
      "total":5,
      "successful":5,
      "failed":0
   },
   "hits":{
      "total":5,
      "max_score":1,
      "hits":[

      ]
   },
   "aggregations":{
      "products":{
         "doc_count_error_upper_bound":0,
         "sum_other_doc_count":0,
         "buckets":[
            {
               "key":"66130766378",
               "doc_count":5
            },
            {
               "key":"24143302320",
               "doc_count":2
            },
            {
               "key":"16279259401",
               "doc_count":1
            },
            {
               "key":"22681937401",
               "doc_count":1
            },
            {
               "key":"2441925385",
               "doc_count":1
            },
            {
               "key":"24732205320",
               "doc_count":1
            },
            {
               "key":"25071098119",
               "doc_count":1
            }
         ]
      }
   }
}

```

Si ça peut aider quelqu'un qui est dans la même galère...

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [July 6, 2017, 1:52pm UTC](https://discuss.elastic.co/t/children-aggregation-totalement-fausse/1470/3 "2017-07-06T13:52:15Z")

</div>


