ElasticSearch - упорядочение агрегации по вложенной агрегации по вложенному полю

{
 "query": {
 "match_all": {}
 },
 "from": 0,
 "size": 0,
 "aggs": {
 "itineraryId": {
 "terms": {
 "field": "iid",
 "size": 2147483647,
 "order": [
 {
 "price>price>price.max": "desc"
 }
 ]
 },
 "aggs": {
 "duration": {
 "stats": {
 "field": "drn"
 }
 },
 "price": {
 "nested": {
 "path": "prl"
 },
 "aggs": {
 "price": {
 "filter": {
 "terms": {
 "prl.cc.keyword": [
 "USD"
 ]
 }
 },
 "aggs": {
 "price": {
 "stats": {
 "field": "prl.spl.vl"
 }
 }
 }
 }
 }
 }
 }
 }
 }
}

Здесь я получаю сообщение об ошибке "Недопустимый путь для упорядочения агрегирования терминов [ценa > ценa > цена .max]. Ковры терминов могут быть отсортированы только по пути суб-агрегатора, который построен из нуля или более одноковшовых скоплений в пределах пути и конечной единичной корзины или агрегирования показателей на конце пути. Подпуть [цена] указывает на агрегацию без одного кэша"

запрос работает нормально, если я заказываю агрегирование по длительности, например

"order": [
 {
 "duration.max": "desc"
 }

Итак, есть ли способ упорядочить агрегацию вложенной агрегацией на вложенном поле i.e что-то вроде ниже?

"order": [
 {
 "price>price>price.max": "desc"
 }
1 ответ

Как отметил Val, в комментариях ES пока не поддерживается.

До этого вы можете сначала агрегировать вложенную агрегацию, а затем использовать обратную вложенную агрегацию для агрегирования продолжительности, которая присутствует в корневом документе.

https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-reverse-nested-aggregation.html

licensed under cc by-sa 3.0 with attribution.