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

Azure Cognitive Search中如何实现GroupBy and Count操作?

Azure Cognitive Search 实现分组+统计操作(替代Elasticsearch Aggregate)

Azure Cognitive Search 提供两种核心方式实现类似Elasticsearch的分组统计需求,比客户端全量拉取统计更高效:

1. 基础分组计数(对应ES的Terms Aggregation)

使用Facet参数实现简单的分组计数,适合按字段分组并统计每组的文档数量。

示例(REST API)

请求时添加facet参数,配合$top=0可只返回聚合结果,不返回具体文档:

GET https://<your-search-service>.search.windows.net/indexes/<your-index>/docs?api-version=2023-11-01&facet=category&$top=0

返回结果的@search.facets字段会包含每个分组的名称和对应的文档计数。

示例(.NET SDK)

var searchOptions = new SearchOptions
{
    Size = 0, // 不返回具体文档
    Facets = { "category" } // 指定分组字段
};

var searchResponse = await searchClient.SearchAsync<YourDocumentType>(string.Empty, searchOptions);
var categoryCounts = searchResponse.Facets["category"];
foreach (var facet in categoryCounts)
{
    Console.WriteLine($"分组: {facet.Value}, 数量: {facet.Count}");
}

2. 复杂聚合统计(对应ES的Metrics Aggregation)

使用OData的$apply参数实现更复杂的聚合操作,支持分组后计算求和、平均值、最大值、最小值等指标,还支持嵌套分组。

示例(REST API)

按category分组,统计每组中price的总和、平均值:

GET https://<your-search-service>.search.windows.net/indexes/<your-index>/docs?api-version=2023-11-01&$apply=groupby((category), aggregate(price with sum as total_price, price with avg as avg_price))&$top=0

示例(.NET SDK)

var aggregateOptions = new SearchOptions
{
    Size = 0,
    QueryType = SearchQueryType.Full
};
aggregateOptions.Apply = "groupby((category), aggregate(price with sum as total_price, price with avg as avg_price))";

var aggregateResponse = await searchClient.SearchAsync<dynamic>(string.Empty, aggregateOptions);
foreach (var result in aggregateResponse.Documents)
{
    Console.WriteLine($"分类: {result.category}, 总价: {result.total_price}, 均价: {result.avg_price}");
}

关键说明

  • Facet适合轻量分组计数,支持配置返回的分组数量(如facet=category,count:500),性能优异。
  • $apply支持多维度嵌套分组(如groupby((category, region), ...))和多指标聚合,满足复杂统计场景。
  • 无论数据量大小,服务端聚合都能减少网络传输开销,利用搜索服务的算力提升效率,比客户端全量拉取统计更优。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 15:42:22