# Result in specific order

**URL:** <https://discuss.elastic.co/t/result-in-specific-order/68856>\
**Category:** Elasticsearch\
**Created:** [December 13, 2016, 11:17am UTC](https://discuss.elastic.co/t/result-in-specific-order/68856 "2016-12-13T11:17:07Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![Masood\_Rehman](https://avatars.discourse-cdn.com/v4/letter/m/dfb087/32.png) [@Masood\_Rehman](https://discuss.elastic.co/u/Masood_Rehman)\
**Post date:** [December 13, 2016, 11:17am UTC](https://discuss.elastic.co/t/result-in-specific-order/68856/1 "2016-12-13T11:17:07Z")

</div>

I have the following index in elasticsearch 2.3.4.  
What will be the query that return me the Desired Output given below from the given collection.

**Collection:**

```
[
    {
          "product_id": 1,
          "product_title": "product title 1",
          "product_status": "launched"
    },
    {
          "product_id": 2,
          "product_title": "product title 2",
          "product_status": "launched"
    },
    {
          "product_id": 7,
          "product_title": "product title 7",
          "product_status": "upcoming"
    },
    {
          "product_id": 8,
          "product_title": "product title 8",
          "product_status": "upcoming"
    },
    {
          "product_id": 3,
          "product_title": "product title 3",
          "product_status": "discontinued"
    },
    {
          "product_id": 4,
          "product_title": "product title 4",
          "product_status": "discontinued"
    },
    {
          "product_id": 5,
          "product_title": "product title 5",
          "product_status": "comingsoon"
    },
    {
          "product_id": 6,
          "product_title": "product title 6",
          "product_status": "comingsoon"
    }
]

```

**Desired Output:**

```
[
    {
          "product_id": 1,
          "product_title": "product title 1",
          "product_status": "launched"
    },
    {
          "product_id": 2,
          "product_title": "product title 2",
          "product_status": "launched"
    },
    {
          "product_id": 3,
          "product_title": "product title 3",
          "product_status": "discontinued"
    },
    {
          "product_id": 4,
          "product_title": "product title 4",
          "product_status": "discontinued"
    },
    {
          "product_id": 5,
          "product_title": "product title 5",
          "product_status": "comingsoon"
    },
    {
          "product_id": 6,
          "product_title": "product title 6",
          "product_status": "comingsoon"
    },
    {
          "product_id": 7,
          "product_title": "product title 7",
          "product_status": "upcoming"
    },
    {
          "product_id": 8,
          "product_title": "product title 8",
          "product_status": "upcoming"
    },
]
```

---

<div class="post-metadata">

**Author:** ![cbuescher](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/cbuescher/32/60402_2.png) [@cbuescher](https://discuss.elastic.co/u/cbuescher)\
**Post date:** [December 13, 2016, 11:30am UTC](https://discuss.elastic.co/t/result-in-specific-order/68856/2 "2016-12-13T11:30:33Z")

</div>

You probably want to take a look at [sorting](https://www.elastic.co/guide/en/elasticsearch/reference/5.0/search-request-sort.html).

---

<div class="post-metadata">

**Author:** ![Masood\_Rehman](https://avatars.discourse-cdn.com/v4/letter/m/dfb087/32.png) [@Masood\_Rehman](https://discuss.elastic.co/u/Masood_Rehman)\
**Post date:** [December 13, 2016, 11:36am UTC](https://discuss.elastic.co/t/result-in-specific-order/68856/3 "2016-12-13T11:36:26Z")

</div>

yes but i want to sort it based on product\_status in a specific order not asc or desc.

---

<div class="post-metadata">

**Author:** ![Masood\_Rehman](https://avatars.discourse-cdn.com/v4/letter/m/dfb087/32.png) [@Masood\_Rehman](https://discuss.elastic.co/u/Masood_Rehman)\
**Post date:** [December 13, 2016, 11:37am UTC](https://discuss.elastic.co/t/result-in-specific-order/68856/4 "2016-12-13T11:37:02Z")

</div>

you can see it in my Desire Output format.

---

<div class="post-metadata">

**Author:** ![cbuescher](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/cbuescher/32/60402_2.png) [@cbuescher](https://discuss.elastic.co/u/cbuescher)\
**Post date:** [December 13, 2016, 11:41am UTC](https://discuss.elastic.co/t/result-in-specific-order/68856/5 "2016-12-13T11:41:17Z")

</div>

> [@Masood\_Rehman](#):
>
> i want to sort it based on product\_status in a specific order

Your example is ordered by `product_id` so I assumed this was the goal. If you want to sort on a different field, thats still sorting and nothing a query will solve. I'd say you add another numeric field along with `product_status` that you can sort on, as you can then specify your ordering criteria.

---

<div class="post-metadata">

**Author:** ![Masood\_Rehman](https://avatars.discourse-cdn.com/v4/letter/m/dfb087/32.png) [@Masood\_Rehman](https://discuss.elastic.co/u/Masood_Rehman)\
**Post date:** [December 13, 2016, 11:56am UTC](https://discuss.elastic.co/t/result-in-specific-order/68856/6 "2016-12-13T11:56:23Z")

</div>

Can i use script based sorting ? OR

if i replace the product status value from string to numeric like e.g

launched = 1  
discontinued = 2  
comingsoon = 3  
upcoming = 4

This will be right ?

---

<div class="post-metadata">

**Author:** ![cbuescher](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/cbuescher/32/60402_2.png) [@cbuescher](https://discuss.elastic.co/u/cbuescher)\
**Post date:** [December 13, 2016, 12:00pm UTC](https://discuss.elastic.co/t/result-in-specific-order/68856/7 "2016-12-13T12:00:16Z")

</div>

Yes, and Yes. I'd suggest the second approach, or adding an extra field, since scripts might be slower.

---

<div class="post-metadata">

**Author:** ![Masood\_Rehman](https://avatars.discourse-cdn.com/v4/letter/m/dfb087/32.png) [@Masood\_Rehman](https://discuss.elastic.co/u/Masood_Rehman)\
**Post date:** [December 13, 2016, 12:02pm UTC](https://discuss.elastic.co/t/result-in-specific-order/68856/8 "2016-12-13T12:02:50Z")

</div>

Got it.

Thank you very much.

---

<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:** [January 10, 2017, 12:03pm UTC](https://discuss.elastic.co/t/result-in-specific-order/68856/9 "2017-01-10T12:03:17Z")

</div>

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