I have to sort on a field that is one level nested using the elastic java high level rest client api. I could find this answer
Elasticsearch nested sorting
The problem is that the answer uses SortBuilder for sorting nested fields using the following code :
SortBuilder sb = SortBuilders.fieldSort("authorList.lastName")
.order(SortOrder.ASC)
.setNestedPath("authorList")
.setNestedFilter(matchFirst);
However it seems that nestedPath and NestedFilter have been deprecated in 6.3.2 elastic (deprication info)and a new NestedSortBuilder has been introduced. However I was not able to build a query using it. Can anyone please explain how to use it or perhaps point me to an example where it has been used?
Actually was easy. This works for me :
SortBuilders.fieldSort("bulkOrders.expiryDate").order(SortOrder.asc).setNestedSort(new NestedSortBuilder("bulkOrders"));
This is equivalent to :
"sort": [
{
"bulkOrders.expiryDate": {
"order": "asc",
"nested": {
"path": "bulkOrders"
}
}
}
]
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