Порядок агрегации терминов заказа по источникам документации по агрегации с наибольшим количеством просмотров
У меня есть запрос,
Контекст:
Это один индекс турпакетов с одним свойством set_url, несколько пакетов с одинаковым set_url называются семейными пакетами.
Требование:
Получение seo-пакетов в порядке сортировки любого поля, скажем, длительности (индексируется как type: integer), но сортировка будет основываться на минимальной цене пакета на семью и требует результата размером 20.
Постановка задачи в простом виде : скажем, агрегатор терминов по полю set_url создает 3 блока A, B, C, и каждый блок имеет 3 пакета, (A1, A2, A3), (B1, B2, B3) и (C1, C2, C3), теперь сначала я хочу вычислить пакет с минимальной ценой из каждого сегмента, скажем, это будет A2, B3, C1, затем я хочу отсортировать сегменты по полю длительности соответствующих пакетов с минимальной ценой ведро, то есть пакеты A2, B3 и C1.
Что я пытаюсь сделать:
Применить некоторые фильтры
применить условия агрегации верхнего уровня к ключу set_url, делая пакеты семейства пакетами. Теперь я хочу упорядочить эти сегменты по пакетам семейства минимальных цен, которые получены из агрегации топ-хитов и агрегации топ-хитов, агрегации метрик в соответствии с документами ES.
Это субагрегация хитов типа top, которая выполняет сортировку по цене в порядке возрастания и принимает один размер, чтобы выбрать пакет семейства минимальных цен.
Текущий запрос:
{
index: "seo_packages",
type: "seo_package",
body: {
size: 0,
query: {
bool: {
filter: {
and: [{
terms: {
package_type: ["seo"]
}
},
{
terms: {
categories: ["tour"]
}
},
{
term: {
is_published: true
}
},
],
},
}
},
aggs: {
group_by_set_url: {
terms: {
field: "set_url",
size: 10,
order: {
"min_price_expressions.how to access doc source property duration here" => "asc"
}
},
aggs: {
min_price_expressions: {
top_hits: {
sort: [{
price_expression: {
order: "asc"
}
}],
_source: {
includes: [: id,: duration]
},
size: 1
},
}
}
}
}
}
}
Каким должен быть здесь порядок заказа, чтобы получить доступ к свойству документа агрегации лучших хитов?
Заранее спасибо.