问题描述
我想使用 nesT 在 Elastic Search 中执行聚合,这将模拟以下 sql 查询:
select region,bucket,count(dispositioncode)
from tbl
group by region,bucket
我目前的尝试
var dispositionCodes = new TermsQuery
{
Isverbatim = true,Field = "trailstatus",Terms = new string[] { "TR" }
};
ISearchResponse<TrailReportModel> searchResponse =
ConnectionToES.EsClient()
.Search<TrailReportModel>
(s => s
.Index(FeedbackIndex)
.From(0)
.Size(RecordSize)
.Query(q => q.MatchAll()
.Aggregations(fa => fa
.Filter("disp_aggs",f => f.Filter(fd => dispositionCodes))
)
var result = ((nest.SingleBucketAggregate)searchResponse.Aggregations["disp_aggs"]).DocCount;
这给了我整个记录的计数,而不管 Region 和 Bucket。但我正在寻找每个区域和桶的计数。
我怎样才能做到这一点?
解决方法
没有案例进行测试有点困难,但您可能希望使用 Terms aggregation(在 NEST 中)。
有了这个,您可以指定如下内容:
.Aggregations(a => a
.Terms("group_by_region",t => t.Field("region"))
.Terms("group_by_bucket",t => t.Field("bucket")))
这个 answer 也可能有帮助,这是一个类似的问题 :)