You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在REST API中对两个变量求和并按求和结果排序?

解决方案:基于两个聚合字段的求和结果排序

你需要借助Elasticsearch的bucket_script聚合来计算两个求和字段的总和,然后基于这个总和对桶进行排序。下面是修改后的完整聚合请求:

"aggs": { 
  "genres": { 
    "terms": { 
      "field": "L7_PROTO_NAME.keyword", 
      "order": { "sum_bytes": "desc" } 
    }, 
    "aggs": { 
      "in_bytes": { "sum": { "field": "IN_BYTES" } }, 
      "out_bytes": { "sum": { "field": "OUT_BYTES" } },
      "sum_bytes": {
        "bucket_script": {
          "buckets_path": {
            "in": "in_bytes",
            "out": "out_bytes"
          },
          "script": "params.in + params.out"
        }
      }
    } 
  } 
}

关键改动说明:

  • 新增了sum_bytes子聚合,类型为bucket_script:
    • buckets_path用来指定要引用的子聚合结果(这里对应之前定义的in_bytes和out_bytes求和聚合)
    • script部分编写简单的求和逻辑,将两个字段的数值相加
  • 在terms聚合的order参数中,直接引用这个新生成的sum_bytes聚合结果进行降序排序

这样执行聚合请求后,就能得到按IN_BYTES和OUT_BYTES总和从大到小排序的L7_PROTO_NAME.keyword分组结果了。

内容的提问来源于stack exchange,提问作者張皓翔

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 06:48:14