What is the best way to specify the sort order in ElasticSearch for multiple fields? The query string format does not seem to work at all:
http://elasticsearch_url/index/_search?sort=field1:asc&sort=field2:desc&size=100
One would like to sort first by field1, then by field2, but only one of the fields seems to be sorted correctly. The full notations works better, but the first entries have occasionally the wrong search order:
curl -s -XGET http://elasticsearch_url/index/_search -d '
{
"sort": [
{ "field1": { "order": "desc" }},
{ "field2": { "order": "desc" }}
],
"size": 100
}'
Apparently the second, full notation works better.
There was another problem that one of the fields contained urls, which was parsed in odd ways by ElasticSearch. Even normal string fields can be difficult to sort, indexing a url in ElasticSearch is even more difficult.
The sort
keyword takes in an array that can target multiple fields.
curl -s -XGET http://elasticsearch_url/index/_search -d '
{
"sort": [
{ "field1": { "order": "desc" }},
{ "field2": { "order": "desc" }}
],
"size": 100
}'
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With