'Sorting on fields containing Numbers as strings

I am trying to sort results in elastic search based on a field named "segmentNumber" that has numbers stored as strings i.e ("1", "2", "10", "14"). I need to write an ES query to get results in sorted ascending order and descending as shown below.

Ascending order:

{segmentNumber: "1"},

{segmentNumber: "2"},

{segmentNumber: "10"},

{segmentNumber: "14"},

Descending Order:

{segmentNumber: "14"},

{segmentNumber: "10"},

{segmentNumber: "2"},

{segmentNumber: "1"},

I am using a sort script as shown below to achieve this, but it doesn't work for me

  "sort": [
    {
      "_script": {
        "script": "try { Integer.parseInt(doc[\"segmentNumber.keyword\"].value); } catch(Exception e){ return Integer.MAX_VALUE;}",
        "type": "number",
        "order": "asc"
      }
    }
  ]
}

Could anyone please suggest me how to achieve this functionality ? Thanks!



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source