У меня есть индекс, как показано ниже:
cargroup
"mappings": {
"properties": {
"id": { "type": "integer" },
"cars": { "type": "nested",
"properties": {
"brand": {
"type": "keyword"
},
"value": {
"type": "integer"
}
}
},
Как я могу получить cargroup, которая имеет бренд 'toyota' с суммой стоимости> 100? (сумма значения рассчитывается только для бренда «toyota»)
, например, с учетом следующих документов:
[id: 1,
cars:[{
brand: toyota,
value: 30},
{
brand: toyota,
value: 30},
{
brand: honda,
value: 30}
],
id: 2,
cars:[{
brand: toyota,
value: 30},
{
brand: toyota,
value: 50},
{
brand: honda,
value: 30}
],
id: 1,
cars:[{
brand: toyota,
value: 30},
{
brand: toyota,
value: 80},
{
brand: honda,
value: 30}
]]
Я хотел бы получить только do c no 3, поскольку его toyota Сумма стоимости автомобилей равна (80 + 30 = 110) больше чем 100
Я использовал термины и отфильтрованное агрегирование, чтобы разделить группы автомобилей на Bucket 'id', а затем использовал агрегацию суммы в каждом бакете. Однако я не нашел способа «связать» каждую группу автомобилей с соответствующим сегментом для последующей фильтрации.
Мое требование аналогично вложенной функциональности сортировки. Я могу указать путь и логи фильтрации c для вложенных полей, а затем агрегировать результат, используя режим сортировки. Мне нужна аналогичная функциональность для фильтрации.