Я действительно запутался.
Я создал вложенную структуру с тремя типами данных внутри, addfields - это вложенный тип данных со свойствами:
Данные внутри упругой выглядят так:
{
"_index": "item",
"_type": "_doc",
"_source": {
"id": 1,
"addfields": [
{
"id": 1,
"value_numeric": 10
},
{
"id": 2,
"value_numeric": 10
},
{
"id": 3,
"value": "Daniel"
},
]
},
}
------------------------------------------------------------------------------------
{
"_index": "item",
"_type": "_doc",
"_source": {
"id": 2,
"addfields": [
{
"id": 1,
"value_numeric": 150
},
{
"id": 2,
"value_numeric": 100
},
{
"id": 3,
"value": "Daniel"
},
]
},
}
------------------------------------------------------------------------------------
{
"_index": "item",
"_type": "_doc",
"_source": {
"id": 2,
"addfields": [
{
"id": 1,
"value_numeric": 250
},
{
"id": 2,
"value_numeric": 200
},
{
"id": 3,
"value": "Richard"
},
]
},
}
Я хочуагрегировать эти данные, например:
addfields [1] - addfields [2] и группировать их по addfields [3]
Я пытался использовать bucket_script следующим образом, но дела шли не очень хорошо.
{
"size": 0,
"aggs": {
'nested' => [
'path' => 'addfields',
],
"addfields": {
"aggs": {
"leftfield": {
"filter": {
"bool": {
"must": {
{
"match": {"addfields.id": 1}
}
}
}
},
"aggs": {
"values": {
"terms": {
"field": "value_numeric",
"size": 9999
}
}
}
},
"rightfield": {
"filter": {
"bool": {
"must": {
{
"match": {"addfields.id": 2}
}
}
}
},
"aggs": {
"values": {
"terms": {
"field": "value_numeric",
"size": 9999
}
},
"calculate": {
"bucket_script": {
"buckets_path": {
"left": "leftfield",
"right": "rightfield"
},
"script": {
"source": "params.leftfield - params.rightfield"
}
}
}
}
}
}
}