我是Elastic Search的新手,无法理解为什么我的嵌套排序无法正常工作。 我的(修改后的)工作的json映射如下所示:
{
"mappings": {
"docs": {
"properties": {
"prop1": {
"type": "text"
},"prop2": {
"type": "text"
},"someId": {
"type": "long"
},"someObject": {
"type": "nested","properties": {
"id": {
"type": "long"
},"otherId": {
"type": "long"
},"timeCreated": {
"type": "date","format": "dateOptionalTime"
},"timeUpdated": {
"type": "date","format": "dateOptionalTime"
}
}
},}
}
},"settings": {// some settings here}
}
在此,我想对timeCreated
对象中可用的someObject
属性添加排序。为此,我执行了以下操作:
SearchRequestBuilder searchRequestBuilder = client.prepareSearch(indexName);
searchRequestBuilder.addSort(SortBuilders.fieldSort("timeCreated").order(SortOrder.DESC).setnestedPath("someObject"));
运行结果时,将生成以下查询:
{
"from": 0,"size": 10,"_source": {
"includes": [],"excludes": []
},"sort": [
{
"someObject.timeCreated": {
"order": "desc","nested_path": "someObject"
}
}
]
}
我认为可以做到的。但是当获得结果时,我发现结果未按nestedObject.timeCreated
排序。我想知道我是否错过了什么?目前,我们正在生产中使用ES 5.6。请指教。
这是documentation用于嵌套排序。