我需要使用nest返回文档中的所有categories distincts(不重复任何内容)。
在sql中,它如下所示:
SELECT DISTINCT Category
FROM Log
ORDER BY Category ASC
在elasticsearch中,我是这样做的:
GET log/_search
{
"size":"0",
"aggs" : {
"alias_category" : {
"terms" : { "field" : "category.keyword" }
}
}
}
我怎么能用鸟巢做到这一点?
public ICollection<string> SelectAllCategoriesDistinct(ElasticClient client)
{
var searchResponse = client.Search<LogElasticSearch>(s => s
.Query(q => q
.Terms(t => t
.Field(f => f.Category)
)
)
);
return (ICollection<string>)searchResponse;
}
2条答案
按热度按时间t98cgbkg1#
我找到了一个办法。不是一个优雅的方式,但我发现在弹性网站(https://discuss.elastic.co/t/c-nest-best-way-of-accessing-properties-of-iaggregate-object/85384/2)我是这样做的:
如果有人知道更好的方法,帮助我提高,但这样就达到了目标。
hl0ma9xz2#
我将使用复合聚合来获取所有术语。与术语聚合不同,复合聚合支持分页,因此如果有很多术语要获取,则可以发出多个请求