# Sort Date for different value of particular field in Single Query

**URL:** <https://discuss.elastic.co/t/sort-date-for-different-value-of-particular-field-in-single-query/165023>\
**Category:** Elasticsearch\
**Created:** [January 21, 2019, 10:01am UTC](https://discuss.elastic.co/t/sort-date-for-different-value-of-particular-field-in-single-query/165023 "2019-01-21T10:01:46Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![smidev11](https://avatars.discourse-cdn.com/v4/letter/s/b9bd4f/32.png) [@smidev11](https://discuss.elastic.co/u/smidev11)\
**Post date:** [January 21, 2019, 10:01am UTC](https://discuss.elastic.co/t/sort-date-for-different-value-of-particular-field-in-single-query/165023/1 "2019-01-21T10:01:46Z")

</div>

Lets say I have following content on index.

{ date : 2019-01-21T08:20:18.962Z , student : "A", "City": "city1" }  
**{ date : 2019-01-21T08:20:55.962Z , student : "A", "City": "city1" }**  
{ date : 2019-01-21T08:29:20.962Z , student : "B", "City": "city1" }  
{ date : 2019-01-21T08:20:10.962Z , student : "A", "City": "city1" }  
**{ date : 2019-01-21T08:29:21.962Z , student : "B", "City": "city1" }**

I want to get the latest date for student A and Student B in single query so that I will get following output :  
{ date : 2019-01-21T08:\*\*20:55.\*\*962Z , student : "A", "City": "city1" }  
{ date : 2019-01-21T08: **29:21**.962Z , student : "B", "City": "city1" }

I know using sorting on date desc and applying must match on student : "A" will get me latest date for student A , and like wise for student B. But I need to run two separate query for this.

Please let know if we can achieve this in single query and how .

Thanks .

---

<div class="post-metadata">

**Author:** ![Magnus\_Kessler](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/magnus_kessler/32/42001_2.png) [@Magnus\_Kessler](https://discuss.elastic.co/u/Magnus_Kessler)\
**Post date:** [January 21, 2019, 1:51pm UTC](https://discuss.elastic.co/t/sort-date-for-different-value-of-particular-field-in-single-query/165023/2 "2019-01-21T13:51:42Z")

</div>

Have a look at the [TopHits aggregation](https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-metrics-top-hits-aggregation.html).

Ensure that the `student` field is mapped as `keyword` for use with aggegations.

```auto
{
  "size": 0,
  "aggs": {
    "students": {
      "terms": {
        "field": "student",
        "size": 100
      },
      "aggs": {
        "top": {
          "top_hits": {
            "sort": [
              {
                "date": {
                  "order": "desc"
                }
              }
            ],
            "size": 1
          }
        }
      }
    }
  }
}

```

---

<div class="post-metadata">

**Author:** ![smidev11](https://avatars.discourse-cdn.com/v4/letter/s/b9bd4f/32.png) [@smidev11](https://discuss.elastic.co/u/smidev11)\
**Post date:** [January 22, 2019, 5:21am UTC](https://discuss.elastic.co/t/sort-date-for-different-value-of-particular-field-in-single-query/165023/3 "2019-01-22T05:21:55Z")

</div>

> [@Magnus\_Kessler](#):
>
> top\_hits

Thanks . It worked for me.

---

<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:** [February 19, 2019, 5:29am UTC](https://discuss.elastic.co/t/sort-date-for-different-value-of-particular-field-in-single-query/165023/4 "2019-02-19T05:29:57Z")

</div>

Closed on February 19, 2019, 5:29am UTC

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