我对ElasticSearch和NEST相对较新。在一个项目中,我使用的是ElasticSearch 2.2.0& ElasticSearch.Net 1.7.2 with NEST。
我无法让min聚合工作。它总是返回0。
以下是获取聚合值的代码:
const string priceAggNameMin = "price_aggregation_min";
const string priceAggNameMax = "price_aggregation_max";
var searchResponse = _esClient.Search<ProductGroupDto>(s => s
.Aggregations(a => a
.Min(priceAggNameMin, st => st
.Field(o => o.Price))
.Max(priceAggNameMax, st => st
.Field(o => o.Price))));
LogElasticSearchRequest(searchResponse.RequestInformation.RequestUrl);
var minPrice = Convert.ToDecimal(searchResponse.Aggs.Min(priceAggNameMin).Value);
var maxPrice = Convert.ToDecimal(searchResponse.Aggs.Max(priceAggNameMax).Value);
对ES的原始请求(由NEST生成)如下所示:
{
"aggs": {
"price_aggregation_min": {
"min": {
"field": "price"
}
},
"price_aggregation_max": {
"max": {
"field": "price"
}
}
}
}
Postman对此查询的响应如下所示:
{
....
"aggregations": {
"price_aggregation_max": {
"value": 51.9
},
"price_aggregation_min": {
"value": 12
}
}
}
因此,似乎ES响应最小聚合的正确值,但NEST将其返回为0.
我错过了什么明显的东西吗?