iT邦幫忙

第 12 屆 iT 邦幫忙鐵人賽

DAY 26
1
Elastic Stack on Cloud

Python&Elasticsearch 入門系列 第 26

IT鐵人第26天 Elasticsearch 使用python查詢資料 Aggregations:Max/Min

今天要介紹的是Max和Min
今天的測試資料
https://ithelp.ithome.com.tw/upload/images/20201009/20129976BqgF7Y2RxE.png

Max

最大值,大家應該都很熟悉了哈哈哈,直接來看範例吧

可調參數:
missing:當數值為空時給預設值

先設定一個目標,假設我想搜尋出資工一2數學最高分
query:

"query": {
  "term": {
    "class": "資工一2"
  }
}

aggs query:

"aggs": {
  "max_price": {
    "max": {
      "field": "grades.math",
      "missing": 20
    }
  }
}

組合起來:

{
  "query": {
    "term": {
      "class": "資工一2"
    }
  },
  "aggs": {
    "max_price": { "max": { "field": "grades.math" } }
  }
}

結果:

"aggregations" : {
  "max_price" : {
    "value" : 91.0
  }
}

也可以使用script操作
query:

{
  "query": {
    "term": {
      "class": "資工一2"
    }
  },
  "aggs": {
    "max_price": {
      "max": {
        "field": "grades.math",
        "missing": 20,
        "script": {
          "source": "_value - 10"
        }
      }
    }
  }
}

結果:

"aggregations" : {
  "max_price" : {
    "value" : 81.0
  }
}

Min

最小值,直接來看例子
可調參數:
missing:當值為空時給預設值

aggs query:

"aggs": {
  "min_price": {
    "min": {
      "field": "grades.math",
      "missing": 20
    }
  }
}

結果:

"aggregations" : {
  "min_price" : {
    "value" : 34.0
  }
}

當然也可以加上script使用
aggs query:

"aggs": {
  "min_price": {
    "min": {
      "field": "grades.math",
      "missing": 20,
      "script": {
        "source": "if(_value < 60){_value + (60 - _value)}"
      }
    }
  }
}

結果:

"aggregations" : {
  "min_price" : {
    "value" : 60.0
  }
}

今天的文章就到這邊,謝謝大家


上一篇
IT鐵人第25天 Elasticsearch 使用python查詢資料 Aggregations:Geo Bounds/Geo Centroid
下一篇
IT鐵人第27天 Elasticsearch 使用python查詢資料 Aggregations:Percentiles/Percentile Ranks
系列文
Python&Elasticsearch 入門30

尚未有邦友留言

立即登入留言