Я пытаюсь вычислить агрегированное среднее значение поля в моей базе данных с помощью elasticsearch. У меня нет проблем с вычислением значения av без фильтрации:
{
"query": {
"match_all":{}
},
"size": 0,
"aggs": {
"avg_quantity": {
"avg": {
"field": "license_offer.unit_price"
}
}
}
}
Однако мне нужно исключить из документов агрегирования, у которых license_offer.unit_price равен 0 (licence_offer - это вложенный объект в лицензии).
Я пробовал разные вещи, это моя последняя попытка:
{
"size": 0,
"query": {
"constant_score": {
"filter": {
"license_offer.unit_price": {
"gte": 0
}
}
}
},
"aggs": {
"quantity_stats": {
"stats": {
"field": "license_offer.unit_price"
}
}
}
}
но я получаю сообщение об ошибке:
"type": "parsing_exception",
"reason": "no [query] registered for [license_offer.unit_price]",
Как применить фильтр для исключения определенного числового значения в поле вложенного объекта с помощью эластичного поиска?