У меня есть такие документы в моем индексе:
{
"Pieces": 5,
"parts": [
{
"Quantity": 1,
"PartID": 1,
},
{
"Quantity": 1,
"PartID": 2
},
{
"Quantity": 1,
"PartID": 3
},
{
"Quantity": 1,
"PartID": 4
}
]
}
Я хотел бы подготовить запрос, в котором перечислены все документы, где значение Pieces
не равно сумме Quantity
во всех parts
,У меня есть что-то вроде этого:
GET /_search
{
"size": 0,
"aggs": {
"group_by_id": {
"terms": {
"field": "_id",
"size": 1000000000
},
"aggs": {
"sum_of_parts": {
"nested": {
"path": "parts"
},
"aggs": {
"sum_of_quantity": {
"sum": {
"field": "parts.Quantity"
}
}
}
},
"sum_of_parts_vs_pieces": {
"bucket_selector": {
"buckets_path": {
"sumOfPart": "sum_of_parts>sum_of_quantity"
},
"script": "params.sumOfPart != HOW_TO_PUT_Pieces_VALUE_HERE???"
}
}
}
}
}
}
, который почти работает (подсчитывает сумму Quantity
для всех частей) ... но ... я понятия не имею, как передать значение Pieces
вbucket_selector
.
У вас есть идеи, как это сделать?Или, может быть, у вас есть идея, как выполнить эту задачу по-другому?