簡體   English   中英

具有范圍查詢的彈性搜索聚合被忽略

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM