# Default sort in template with json source

**URL:** <https://discuss.elastic.co/t/default-sort-in-template-with-json-source/374221>\
**Category:** Elasticsearch\
**Tags:** elastic-stack-monitoring\
**Created:** [February 7, 2025, 11:30am UTC](https://discuss.elastic.co/t/default-sort-in-template-with-json-source/374221 "2025-02-07T11:30:36Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![orlenkoda5](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/orlenkoda5/32/117648_2.png) [@orlenkoda5](https://discuss.elastic.co/u/orlenkoda5)\
**Post date:** [February 7, 2025, 11:30am UTC](https://discuss.elastic.co/t/default-sort-in-template-with-json-source/374221/1 "2025-02-07T11:30:36Z")

</div>

Hi everyone, I have a question with default sorting using template with json source query. Here it is:

```auto
PUT _scripts/multipurpose_template
{
"script": {
  "lang": "mustache",
  "source": """{"sort": {{#toJson}}sort{{/toJson}},"from":"{{from}}","size":"{{size}}","query":{"bool":{"must":{{#toJson}}clauses{{/toJson}}}}}"""
}
}

```

How can I include default sorting in this template? Sort field:

```auto
{
"sort": {
"lastPriceDate": {
"order": desc
}
}
}

```

I have tried this:

```auto
PUT _scripts/multipurpose_template_sort_by_lastPriceDate
{
"script": {
  "lang": "mustache",
  "source": """{"sort": {"lastPriceDate": {"order": "desc"}}},"sort": {{#toJson}}sort{{/toJson}},"from":"{{from}}","size":"{{size}}","query":{"bool":{"must":{{#toJson}}clauses{{/toJson}}}}}"""
}
} 

```

This template works and sort by field "lastPriceDate" but othere sorting parameters dont't work.

---

<div class="post-metadata">

**Author:** ![RabBit\_BR](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/rabbit_br/32/82261_2.png) [@RabBit\_BR](https://discuss.elastic.co/u/RabBit_BR)\
**Post date:** [February 7, 2025, 2:33pm UTC](https://discuss.elastic.co/t/default-sort-in-template-with-json-source/374221/2 "2025-02-07T14:33:42Z")

</div>

Hi @orlenkoda5

You can use [conditions](https://www.elastic.co/guide/en/elasticsearch/reference/current/search-template.html#search-template-use-conditions) for this. Below if you set the sort\_default variable to true you use the default, if it is false sort uses the field lastPriceDate.

```auto
POST _render/template
{
  "source": """{ 
          "sort": {{#sort_default}}
                     {{#toJson}}my_sort{{/toJson}} },
                   {{/sort_default}}
                      {"default_sort": { "order": "desc"}} 
      }""",
  "params": {
    "sort_default": false,
    "my_sort": {
      "lastPriceDate": {
        "order": "desc"
      }
    }
  }
}

```

---

<div class="post-metadata">

**Author:** ![orlenkoda5](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/orlenkoda5/32/117648_2.png) [@orlenkoda5](https://discuss.elastic.co/u/orlenkoda5)\
**Post date:** [November 1, 2025, 8:55am UTC](https://discuss.elastic.co/t/default-sort-in-template-with-json-source/374221/3 "2025-11-01T08:55:58Z")

</div>

> [@RabBit\_BR](#):
>
> ```auto
> POST _render/template
> {
> "source": """{ 
> "sort": {{#sort_default}}
> {{#toJson}}my_sort{{/toJson}} },
> {{/sort_default}}
> {"default_sort": { "order": "desc"}} 
> }""",
> "params": {
> "sort_default": false,
> "my_sort": {
> "lastPriceDate": {
> "order": "desc"
> }
> }
> }
> }
> 
> ```

Thank you
