I'm trying to do nested sorting in Elasticsearch but so far didn't succeed.
My data structure:
{ "_id" : 1,
"authorList" : [
{"lastName":"hawking", "firstName":"stephan"},
{"lastName":"frey", "firstName":"richard"}
]
}
{ "_id" : 2,
"authorList" : [
{"lastName":"roger", "firstName":"christina"},
{"lastName":"freud", "firstName":"damian"}
]
}
I want to sort the documents according the first authors last name in the documents.
Used mapping:
"authorList" : { "type" : "nested", "properties" : {"lastName":{"type":"keyword"}}}
Sort using SearchRequestBuilder (JAVA):
searchRequestBuilder.addSort(
SortBuilders.fieldSort("authorList.lastName")
.order(SortOrder.ASC)
.sortMode(SortMode.MIN)
.setNestedPath("authorList")
)
This works but doesn't give the wanted result (e.g. first "hawking" then "roger").
Did I missed something? Is there a way to indicate Elasticsearch to access index=0 of the array authorList? Is there any mapping / normalizer to index the first entry of the array separately?