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嗎? –