使用NEST,我的请求看起来像这样
var searchRequest = new SearchRequest<T>()
{
...
Aggregations = new TermsAggregation("field1")
{
Field = "field1",
Aggregations = new TermsAggregation("field2")
{
Field = "field2",
}
},
...
}
await _elasticClient.SearchAsync<T>(searchRequest)
并且我得到了我期望的结果,对于“ field1”的每个替代项,聚合都在“ field2”上]
我想要其他聚合,因此我将术语聚合放在AggregationDictionary中。
var aggs = new AggregationDictionary(); aggs.Add("field1", new TermsAggregation("field1") { Field = "field1", Aggregations = new TermsAggregation("field2") { Field = "field2", } }) ... var searchRequest = new SearchRequest<T>() { ... Aggregations = aggs, ... } ... await _elasticClient.SearchAsync<T>(searchRequest)
现在我在“ field1”上获得聚合,但在“ field2”上没有子聚合。
我是否缺少某些东西或应该以这种方式工作?
编辑1:为AggregationDictionary添加了密钥。添加以便我的示例代码(希望)能够编译并包含我的SearchAsync调用
使用NEST,我收到的请求看起来像这样var searchRequest = new SearchRequest
aggs.Add( new TermsAggregation("field1")
{
Field = "field1",
Aggregations = new TermsAggregation("field2")
{
Field = "field2",
}
})
此代码将不会编译为AggregationDictionary.Add()
method signature,因此>
AggregationDictionary.Add()