考虑以下聚合和子聚合:
.Aggregations(a => a
.Terms("ByCustomerByImpressionCount", tad => tad
.Field(o => o.CustomerName)
.OrderDescending("sumImpressionCount")
.Aggregations(ad => ad
.Sum("sumImpressionCount", sad => sad
.Field(o => o.ImpressionCount)
)
)
))
Run Code Online (Sandbox Code Playgroud)
查询工作正常,我得到结果。
我可以通过以下方式访问顶级聚合:
var agg = results.Aggs.Terms("ByCustomerByImpressionCount");
Run Code Online (Sandbox Code Playgroud)
根据文档,我应该能够得到sub agg:
var subAgg = agg.Aggs.Sum("sumImpressionCount");
Run Code Online (Sandbox Code Playgroud)
但是Aggs甚至不是agg的财产-有什么想法吗?
编辑:
这是我能够进行子聚合的唯一方法:
PopulateList(results.Aggs.Terms("CustomersByImpressionCount").Items, CustomersByImpressionCount);
private void PopulateList(IList<KeyItem> items, List<DataContainer> listToPopulate)
{
items.ForEach(item =>
{
listToPopulate
.Add(new DataContainer() { Name = item.Key, Sum = ((ValueMetric)item.Aggregations.First().Value).Value });
});
}
Run Code Online (Sandbox Code Playgroud)
...但这似乎过于复杂。这是ES查询:
"query": {
"bool": {
"must": [
{ "range": { "requestedShipDate": {
"gte": "2014-11-26",
"lte": …Run Code Online (Sandbox Code Playgroud)