[英]Elastic search aggregation with range query ignored
假設我有一個索引,可以為許多產品建立索引。 價格范圍從$ 1到$ 100。我想發送1請求以檢索價格在$ 1和$ 50之間的產品,以及所有產品中的最高價格($ 100)。 因此,我同時發送了1個范圍查詢和聚合查詢的請求:
{
"query": {
"range" : {
"price" : {
"from" : 1,
"to" : 50
}
}
},
"aggs" :{
"max-price" : {
"max" : {
"field" : "price"
}
}
}
它返回了價格在$ 1到$ 50之間的所有產品,並且在聚合字段中返回了最高價格$ 50。 我如何才能使它仍然返回價格在$ 1到$ 50之間但在聚合字段中的最高價格為$ 100的所有產品,這是忽略范圍查詢的所有產品的最高價格?
您可以使用在計算匯總后應用的后置過濾器 。 計算順序:查詢->匯總-> post_filter。
{
"query": {
"match_all": {}
},
"aggs": {
"max-price": {
"max": {
"field": "price"
}
}
},
"post_filter": {
"range": {
"price": {
"from": 1,
"to": 50
}
}
}
}
因此,在上面的查詢中,首先執行匹配所有文檔的查詢,然后在所有這些文檔上計算聚合,從而得出最高價格,然后按提供的范圍過濾查詢文檔的結果。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.