C# 如何使用c迭代弹性搜索桶#
目前,我正在使用NEST API从弹性搜索中获取数据,我正在尝试术语聚合,响应有效,但我无法访问bucket中的数据。 基本上,无法遍历bucket中的字段 下面是我的代码,用于执行术语聚合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
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。这个答案帮助我到达了那里。非常感谢。