'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 |
|---|
