我真的很困惑。
我创建了一个嵌套结构,其中包含三种类型的数据, addfields 是具有属性的嵌套数据类型:
id 输入整数
值类型文本字段数据 true
value_numeric 类型 double
弹性内的数据如下:
{
"_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"
},
]
},
}
我想像这样汇总这些数据
添加字段[1] - 添加字段[2] ,并按添加字段[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"
}
}
}
}
}
}
}