elasticsearch,nest,C#,elasticsearch,Nest" /> elasticsearch,nest,C#,elasticsearch,Nest" />

C# 如何使用c迭代弹性搜索桶#

C# 如何使用c迭代弹性搜索桶#,c#,elasticsearch,nest,C#,elasticsearch,Nest,目前,我正在使用NEST API从弹性搜索中获取数据,我正在尝试术语聚合,响应有效,但我无法访问bucket中的数据。 基本上,无法遍历bucket中的字段 下面是我的代码,用于执行术语聚合 var result = client.Search<GoodDataAttribute>(s => s .Aggregations(a => a .Terms("Resourcegroup", st

目前,我正在使用NEST API从弹性搜索中获取数据,我正在尝试术语聚合,响应有效,但我无法访问bucket中的数据。 基本上,无法遍历bucket中的字段

下面是我的代码,用于执行术语聚合

       var result = client.Search<GoodDataAttribute>(s => s 
                .Aggregations(a => a 
                .Terms("Resourcegroup", st => st 
                .Field(o => o.ResourceGroup) 
                .Size(16) 
                .ExecutionHint(TermsAggregationExecutionHint.Map) 
                ))); 
            var result1 = result.Documents; 
            Console.WriteLine(result1); 
            foreach (var result2 in result.Documents) 
            { 
                Console.WriteLine(result2.ResourceGroup); 
            } 
            var resultGroups = result.Aggregations; 
            Console.WriteLine(resultGroups.Count); 
            foreach (var resultGroup in resultGroups.Values) 
            { 
                Console.WriteLine(resultGroup.ToString()); 
            } 
var result=client.Search(s=>s
.聚合(a=>a
.术语(“资源组”,st=>st
.Field(o=>o.ResourceGroup)
.尺寸(16)
.ExecutionHint(TermsAggregationExecutionHint.Map)
))); 
var result1=结果文件;
控制台写入线(结果1);
foreach(result.Documents中的var result2)
{ 
Console.WriteLine(result2.ResourceGroup);
} 
var resultGroups=result.Aggregations;
Console.WriteLine(resultGroups.Count);
foreach(resultGroups.Values中的var resultGroups)
{ 
Console.WriteLine(resultGroup.ToString());
} 

您需要使用结果的
Aggs
属性。根据文件:

使用请求中指定的键从响应的Aggs属性访问聚合结果

在您的示例中,这将是
Resourcegroup
。我已经在解决方案中使用了它,它的工作原理与预期一致。您的代码应该类似于

var agg = results.Aggs.Terms("Resourcegroup");
if (agg!= null && agg.Items.Count > 0)
{
    foreach (var resourceGroupAgg in agg.Items)
    {
        // do something with the aggregations
        // the term is accessed using the Key property
        var term = resourceGroupAgg.Key;
        // the count is accessed through the DocCount property
        var count = resourceGroupAgg.Count;
    }
}
这篇文章有更多的细节


希望这有帮助。

有帮助吗?我想我会添加它来获取您的物品,您现在需要参考agg.bucket。这个答案帮助我到达了那里。非常感谢。