Я пытаюсь создать запрос, который возвращает документы на основе расчета, который лучше по сравнению с SumIf в Excel.
Очень упрощенная версия моего отображения:
{
"item": {
"properties": {
"name": {
"type": "text"
},
"data": {
"properties": {
"inventory": {
"properties": {
"locations": {
"type": "nested",
"properties": {
"state": {
"type": "keyword"
},
"amount": {
"type": "double"
}
}
},
"total": {
"type": "double"
}
}
}
}
}
}
}
}
(Эти данные не имеют большого смысла в реальной системе, но я не могу опубликовать фактическое отображение.)
Два примера документа могут быть:
{
"name": "guitar",
"data": {
"inventory": {
"locations": [
{
"state": "CA",
"amount": 200
},
{
"state": "AZ",
"amount": 100
},
{
"state": "NY",
"amount": 300
}
],
"total": 600
}
}
}
{
"name": "piano",
"data": {
"inventory": {
"locations": [
{
"state": "CA",
"amount": 200
},
{
"state": "AZ",
"amount": 100
},
{
"state": "KY",
"amount": 50
}
],
"total": 350
}
}
}
Я бы хотел иметь возможность вернуть запрос, который возвращает документы, в которых сумма вложенных документов 'NY' и 'CA' превышает 150. В случае данных примера он должен возвращать оба документы, хотя Нью-Йорк не в первом документе, так как СА уже на 200.
Я прочитал большую часть документации по агрегации, которую предоставляет Elastic, но я не смог найти способ сделать это.
Я бы хотел получить несколько советов о том, как решить эту проблему.