首页 > 解决方案 > 结合流利和对象初始化语法

问题描述

使用 .NET 客户端 NEST,是否可以组合两种语法,如下所示,查询用一种语法编写,聚合用另一种语法编写?

var request = new SearchRequest();
request.Query = new MatchAllQuery();
request.Aggregations = new AggregationContainerDescriptor<Car>().Terms("color", x => x.Field(doc => doc.Color));
_elasticClient.Search<Car>(request);

这里的编译错误是 aAggregationContainerDescriptor不会受到 a 的攻击AggregationDictionary

标签: elasticsearchnest

解决方案


您可以将描述符投射到那里IAggregationContainerAggregations从那里获取:

var request = new SearchRequest();
request.Query = new MatchAllQuery();
var aggregationContainer = (IAggregationContainer)new AggregationContainerDescriptor<Car>().Terms("color", x => x.Field(doc => doc.Color));
request.Aggregations = aggregationContainer.Aggregations;
var searchResponse = _elasticClient.Search<Car>(request);

希望有帮助。


推荐阅读