【问题标题】:Get Elasticsearch result from a NEST C# nested aggregation从 NEST C# 嵌套聚合中获取 Elasticsearch 结果
【发布时间】:2017-06-30 11:24:52
【问题描述】:

我有这个 Elasticsearch NEST 查询:

var res = elastic.Search<SegmentRecord>(s => s.Index(esIndex).Aggregations(a => a.Terms("agg", x => x.Field(o => o.InstrumentName).Aggregations(a1 => a1.Terms("agg2", f => f.Field(y => y.GroupId))))));

如何循环遍历所有 InstrumentName 字段,并为每个字段循环遍历所有 GroupId 字段?

【问题讨论】:

    标签: c# elasticsearch nest


    【解决方案1】:

    在 Nest 5.4.0 上

    foreach (var bucket in res.Aggs.Terms("agg").Buckets)
             {
                 foreach (var innerBucket in bucket.Terms("agg2").Buckets)
                 {
                     System.Console.WriteLine($"agg:{bucket.Key}, agg2:{innerBucket.Key} - {innerBucket.DocCount}");
                 }
             }  
    

    【讨论】:

    【解决方案2】:

    这就是我使用嵌套聚合访问子存储桶的方式。

    var yourAgg = result.Aggregations.Terms("YourParentField");
    foreach (var child in yourAgg .Buckets)
    {
       var aggs = child.Terms("YourChildField").Buckets;
       foreach (var item in aggs)
       {
          perDealerAggItems.Add(new AggregateItem()
            {
                  Count = item.DocCount ?? 0,
                  Key = item.Key,
                  ParentList = field
              });
         }
    }
    

    【讨论】:

      猜你喜欢
      • 2015-03-21
      • 2018-03-01
      • 1970-01-01
      • 2019-08-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-14
      • 1970-01-01
      相关资源
      最近更新 更多