您如何使用aggregging对结果进行分组?

时间:2019-07-18 08:21:12

标签: c# elasticsearch nest

我安装了ElasticSearch(6.5.0),并且在我的项目中使用了nest(7.0),我想要一个软件的每个名称,获取该软件的所有子版本。

所以我创建了这个查询:

var res = client
        .Search<Software>(s => s
            .Size(0)
            .Query(q => q
                 .Match(m => m
                    .Field(f => f.Name)
                 )
            )
            .Aggregations(a => a
                .Terms("SubVersion", t => t
                    .Field(ag => ag.SubVersion))
            )
        );

var termsAggregation = searchResponse4.Aggregations.Terms("SubVersion");

但是此查询的结果只给我索引中的不同子版本。

我实际上是ElasticSearch的初学者,我已经尝试过查找有关我的问题的文档,但是我并没有真正找到可以帮助我的东西。

编辑: 为了更好地解释,我想让查询查询给我这样的树

Software1 Subversion1 Subversion2 Software2 Subversion1 SubVersion2

1 个答案:

答案 0 :(得分:0)

我不确定,但是在termsAggregation上您拥有.Bucket属性,该属性为您提供KeyedBucket列表<> 并且.Size(0)应该大于0。

foreach(KeyBucket<> bucket in termsAggregation.Bucket) 
{
 var key = bucket.Key;
 var values = bucket.Values; 
}

有帮助吗?