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

如何通过一次_search请求从多字段获取多聚合结果?

可以在单次Elasticsearch搜索请求中获取多个聚合结果

完全可以在一次_search请求里同时计算多个聚合指标,不需要拆分多次搜索。Elasticsearch的聚合功能支持在同一个请求中定义多个独立的统计逻辑,一次性返回所有你需要的结果,这样能大幅减少网络开销和Elasticsearch的处理压力。

以下是针对你的API测试场景编写的DSL示例,假设你的索引中包含success(布尔型,标记请求是否成功)和response_time(数值型,记录响应时间)字段:

{
  "size": 0,
  "aggs": {
    "successful_requests": {
      "filter": {
        "term": {
          "success": true
        }
      }
    },
    "avg_response_time": {
      "avg": {
        "field": "response_time"
      }
    },
    "response_time_percentiles": {
      "percentiles": {
        "field": "response_time",
        "percents": [50, 90, 95, 99]
      }
    },
    "successful_request_metrics": {
      "filter": {
        "term": {
          "success": true
        }
      },
      "aggs": {
        "avg_successful_rt": {
          "avg": {
            "field": "response_time"
          }
        },
        "successful_rt_percentiles": {
          "percentiles": {
            "field": "response_time",
            "percents": [50, 90, 99]
          }
        }
      }
    }
  }
}

聚合说明:

  • size: 0:无需返回具体文档,只获取聚合结果,提升查询性能
  • successful_requests:统计所有成功请求的数量,结果中的doc_count即为成功请求数
  • avg_response_time:计算所有请求的平均响应时间
  • response_time_percentiles:计算所有请求响应时间的50/90/95/99百分位数
  • successful_request_metrics:嵌套聚合,专门统计成功请求的平均响应时间和对应百分位数

返回结果会包含所有这些聚合的统计值,你可以一次性提取所有需要的指标,不用多次发起搜索请求。

内容的提问来源于stack exchange,提问作者inspiral

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 03:35:23