Я новичок в 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 в производстве. Пожалуйста, порекомендуйте. Вот документация для вложенной сортировки.