目前,我正在使用NEST API从弹性搜索中获取数据,我正在尝试使用Term Aggregation并且响应有效但我无法访问存储桶中的数据。 基本上,无法遍历存储桶中的字段。
这是我的代码聚合
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());
}
答案 0 :(得分:2)
您需要使用结果的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;
}
}
documentation中有更详细的内容。
希望这有帮助。