簡體   English   中英

通過聚合過濾 elasticsearch 查詢

[英]filtering an elasticsearch query by aggregations

嗨,我的問題分為兩個部分。 我有一個看起來像的數據集

{name: "foo", 
 contracts: [{size: 1}, {size: 3}]},
{name: "bar", 
 contracts: [{size: 100}, {size: 300}]}

使用指標聚合,我可以計算出所有項目的平均大小。 1+3+100+300 / 4,但是是否可以返回每個項目的平均合同大小?

我希望能夠回來

{name: "foo", 
 averageContract: 2}, 
{name: "bar", 
 averageContract: 200}, 

另外是否有可能獲得該值並對其進行過濾?

例如匹配 averageContract > 100?

嘗試這個:

{
  "size": 0,
  "aggs": {
    "item": {
      "terms": {
        "field": "name.keyword",
        "size": 10
      },
      "aggs": {
        "averageContract": {
          "avg": {
            "field": "contracts.size"
          }
        },
        "selector_avg_contract": {
          "bucket_selector": {
            "buckets_path": {
              "avg": "averageContract"
            },
            "script": "params.avg > 100"
          }
        }
      }
    }
  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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