1
我试图通过产品编号查询我在Elasticsearch数据库中记录的产品的定价统计信息。定价可能是新的,二手或翻新产品,所以我希望过滤条件。条件过滤器在Marvel基于两个具有新条件的价格文档返回统计信息时用作JSON查询。Spring Elasticsearch Aggregation Filtering Not Working
当我尝试使用Java API执行类似操作时,我获得了基于4个文档的统计信息,其中包括2个新的和2个翻新的。
任何人都可以请确定我在做什么错在下面的Java代码?
谢谢。
这里的工作JSON查询:
GET /stats/price/_search
{
"query": {
"match_phrase": {"mpc": "MGTX2LL/A"}
},
"size": 0,
"aggs" : {
"low_price_stats" : {
"filter": {
"term" : { "condition" : "new"}
},
"aggs" : {
"price_stats" : { "extended_stats" : { "field" : "price" } }
}
}
}
}
而问题的Java:
public Aggregations aggByManufacturerPartNumber(String mpn) {
SearchQuery searchQuery = new NativeSearchQueryBuilder()
.withIndices("stats")
.withTypes("price")
.withQuery(termQuery("mpn", mpn))
.withFilter(
FilterBuilders.termFilter("condition", "New")
)
.addAggregation(AggregationBuilders.extendedStats("stats_agg").field("price"))
.build();
Aggregations aggregations = elasticsearchTemplate.query(searchQuery, new ResultsExtractor<Aggregations>() {
@Override
public Aggregations extract(SearchResponse response) {
return response.getAggregations();
}
});
return aggregations;
}
好的,谢谢!我快到了。子聚合看起来是lowPriceStatsAgg.subAggregation(...)。查询和提取器后,我得到一个空值。因为它是一个子集合,我需要制作一个不同的ResultExtractor吗? –