Default sort in template with json source

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

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:

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

I have tried this:

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.

Hi @orlenkoda5

You can 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.

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"
      }
    }
  }
}