小编Ada*_*ney的帖子

ElasticSearch .NET Nest子聚合

考虑以下聚合和子聚合:

.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)

aggregation elasticsearch nest

5
推荐指数
1
解决办法
2120
查看次数

标签 统计

aggregation ×1

elasticsearch ×1

nest ×1