# Aggregating, picking top value using ordering then ordering buckets by score

**URL:** https://discuss.elastic.co/t/aggregating-picking-top-value-using-ordering-then-ordering-buckets-by-score/198975
**Category:** Elasticsearch
**Created:** [September 10, 2019, 8:53pm UTC](https://discuss.elastic.co/t/aggregating-picking-top-value-using-ordering-then-ordering-buckets-by-score/198975 "2019-09-10T20:53:24Z")
**Posts on this page:** 3
**Page:** 1

<div class="post-metadata">

### Author: ![lloydk](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/lloydk/32/53946_2.png) [@lloydk](https://discuss.elastic.co/u/lloydk)
#### Post date: [September 10, 2019, 8:53pm UTC](https://discuss.elastic.co/t/aggregating-picking-top-value-using-ordering-then-ordering-buckets-by-score/198975/1 "2019-09-10T20:53:24Z")

</div>

Imagine a packages repository like NuGet or NPM. Multiple packages with the same ID and many versions.

These are entered individually as a document into the index.

Now in a query I want to aggregate them by ID, sort them by version and pick the highest version.  
I can do that with something like this:

```
{
    "query": {
        "multi_match" : {
            "query" : "jquery",
            "fields": [
              "packageId^9",
              "title^8",
              "summary^7",
              "description^6",
              "releaseNotes^5"
            ]
        }
    },
    "size": 0,
    "aggs": {
      "group_by_package": {
        "terms": {
          "field": "packageId.keyword",
          "size": 100000
        },
        "aggs": {
          "top_package": {
            "top_hits": {
              "size": 1,
                "sort": [
                {
                  "versionMajor": {
                    "order": "desc"
                  }
                },
                {
                  "versionMinor": {
                    "order": "desc"
                  }
                },
                {
                  "versionPatch": {
                    "order": "desc"
                  }
                },
                {
                  "versionRevision": {
                    "order": "desc"
                  }
                },
                {
                  "versionReleaseLabels.keyword": {
                    "order": "desc"
                  }
                }
              ]
            }
          }
        }
      }
    }
}

```

What I noticed however is the score has disappeared, I think it's down to custom sorting, but I want scoring so I can order the buckets.

How can I achieve this?

---

<div class="post-metadata">

### Author: ![lloydk](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/lloydk/32/53946_2.png) [@lloydk](https://discuss.elastic.co/u/lloydk)
#### Post date: [September 10, 2019, 10:36pm UTC](https://discuss.elastic.co/t/aggregating-picking-top-value-using-ordering-then-ordering-buckets-by-score/198975/2 "2019-09-10T22:36:10Z")

</div>

This seems to work after modifying `aggs`:

```
"aggs": {
  "group_by_package": {
    "terms": {
      "field": "packageId.keyword",
      "size": 100000,
      "order": {
        "max_score": "desc"
      }
    },
    "aggs": {
      "top_package": {
        "top_hits": {
          "size": 1,
          "track_scores": true,
            "sort": [
            {
              "versionMajor": {
                "order": "desc"
              }
            },
            {
              "versionMinor": {
                "order": "desc"
              }
            },
            {
              "versionPatch": {
                "order": "desc"
              }
            },
            {
              "versionRevision": {
                "order": "desc"
              }
            },
            {
              "versionReleaseLabels.keyword": {
                "order": "desc"
              }
            }
          ]
        }
      },
      "max_score": {
          "max": {
            "script": "_score"
          }
        }
    }
  }
}
```

---

<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: [October 8, 2019, 10:41pm UTC](https://discuss.elastic.co/t/aggregating-picking-top-value-using-ordering-then-ordering-buckets-by-score/198975/3 "2019-10-08T22:41:29Z")

</div>

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.
