我正在使用NEST客户端在我的.NET应用程序中使用Elastic Search构建产品搜索引擎,并且有一件事我遇到了麻烦.获得一组独特的价值观.
我正在搜索有数千种产品,但当然我一次只能向用户返回10或20种产品.为此,分页工作正常.但除了这个主要结果,我想向我的用户显示在完整搜索中找到的品牌列表,以呈现这些用于过滤.
我已经读到我应该使用术语聚合.但是,我无法得到比这更好的东西.这仍然没有真正给我我想要的东西,因为它将像"20世纪福克斯"这样的价值分成3个独立的价值观.
var brandResults = client.Search<Product>(s => s
.Query(query)
.Aggregations(a => a.Terms("my_terms_agg", t => t.Field(p => p.BrandName).Size(250))
)
);
var agg = brandResult.Aggs.Terms("my_terms_agg");
Run Code Online (Sandbox Code Playgroud)
这甚至是正确的方法吗?或者应该使用完全不同的东西?而且,我怎样才能获得正确,完整的价值观?(不是按空格分开..但我想这就是你要求一个'条款'列表时得到的结果?)
我正在寻找的是如果你在MS SQL中这样做你会得到什么
SELECT DISTINCT BrandName FROM [Table To Search] WHERE [Where clause without paging]
Run Code Online (Sandbox Code Playgroud)