如何通過 bucket_script 使用存盤桶欄位應用計算?更重要的是,我想了解如何匯總不同的結果。
例如,下面是一個示例查詢和回應。
我正在尋找的是將以下內容匯總到兩個欄位中:
- 來自例如回應 (1 2=3) 的所有桶 dist.value 的總和
- 來自例如回應 (1x10) (2x20)=50 的所有桶 (dist.value x key) 的總和
詢問
{
"size": 0,
"query": {
"bool": {
"must": [
{
"match": {
"field": "value"
}
}
]
}
},
"aggs":{
"sales_summary":{
"terms":{
"field":"qty",
"size":"100"
},
"aggs":{
"dist":{
"cardinality":{
"field":"somekey.keyword"
}
}
}
}
}
}
查詢結果:
{
"aggregations": {
"sales_summary": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [
{
"key": 10,
"doc_count": 100,
"dist": {
"value": 1
}
},
{
"key": 20,
"doc_count": 200,
"dist": {
"value": 2
}
}
]
}
}
}
uj5u.com熱心網友回復:
您需要使用sum bucket aggregation,它是一種管道聚合,用于查找所有存盤桶中基數聚合的回應總和。
從例如回應 (1 2=3) 中搜索查詢所有桶 dist.value 的總和:
POST idxtest1/_search
{
"size": 0,
"aggs": {
"sales_summary": {
"terms": {
"field": "qty",
"size": "100"
},
"aggs": {
"dist": {
"cardinality": {
"field": "pageview"
}
}
}
},
"sum_buckets": {
"sum_bucket": {
"buckets_path": "sales_summary>dist"
}
}
}
}
搜索回應:
"aggregations" : {
"sales_summary" : {
"doc_count_error_upper_bound" : 0,
"sum_other_doc_count" : 0,
"buckets" : [
{
"key" : 10,
"doc_count" : 3,
"dist" : {
"value" : 2
}
},
{
"key" : 20,
"doc_count" : 3,
"dist" : {
"value" : 3
}
}
]
},
"sum_buckets" : {
"value" : 5.0
}
}
對于第二個需求,需要先修改桶聚合回應中value的回應,使用桶腳本聚合,然后使用修改后的值對其進行桶和聚合。
從例如回應 (1x10) (2x20)=50 中搜索所有桶的總和 (dist.value x key)
POST idxtest1/_search
{
"size": 0,
"aggs": {
"sales_summary": {
"terms": {
"field": "qty",
"size": "100"
},
"aggs": {
"dist": {
"cardinality": {
"field": "pageview"
}
},
"format-value-agg": {
"bucket_script": {
"buckets_path": {
"newValue": "dist"
},
"script": "params.newValue * 10"
}
}
}
},
"sum_buckets": {
"sum_bucket": {
"buckets_path": "sales_summary>format-value-agg"
}
}
}
}
搜索回應:
"aggregations" : {
"sales_summary" : {
"doc_count_error_upper_bound" : 0,
"sum_other_doc_count" : 0,
"buckets" : [
{
"key" : 10,
"doc_count" : 3,
"dist" : {
"value" : 2
},
"format-value-agg" : {
"value" : 20.0
}
},
{
"key" : 20,
"doc_count" : 3,
"dist" : {
"value" : 3
},
"format-value-agg" : {
"value" : 30.0
}
}
]
},
"sum_buckets" : {
"value" : 50.0
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/444285.html
上一篇:物件陣列的聚合
