IT铁人第28天 Elasticsearch 使用python查询资料 Aggregations:Sum/Value Count

今天文章的内容是Sum(总和)跟Value Count(数量计算)

今天的示范资料
https://ithelp.ithome.com.tw/upload/images/20201012/20129976F8cr51mt3U.png

Sum

Sum大家应该都很熟悉了,这边就不多做解释,直接进入范例吧

先定个目标,假设我想要统计出资工一2的英文分数总和
query:

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

aggs query:

"aggs": {
  "sum_eng": {
    "sum": {
      "field": "grades.eng",
      "missing": 40
    }
  }
}

组合起来的query:

{
  "query": {
    "term": {
      "class": "资工一2"
    }
  },
  "aggs": {
    "sum_eng": {
      "sum": {
        "field": "grades.eng",
        "missing": 40
      }
    }
  }
}

结果:

"aggregations" : {
  "sum_eng" : {
    "value" : 212.0
  }
}

也可以用脚本调整,假设想帮分数低於60分的人+10分,范例如下
aggs query:

"aggs": {
  "sum_eng": {
    "sum": {
      "field": "grades.eng",
      "missing": 40, 
      "script": {
        "lang": "painless",
        "source": "if(doc['grades.eng'].value<60){doc['grades.eng'].value+10;}else{doc['grades.eng'].value;}"
      }
    }
  }
}

结果:

"aggregations" : {
  "sum_eng" : {
    "value" : 222.0
  }
}

还有另外一种是针对字段histogram fields的应用,想了解更多的可以去:
https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-metrics-sum-aggregation.html#search-aggregations-metrics-sum-aggregation-histogram-fields
histogram fields说明:
https://www.elastic.co/guide/en/elasticsearch/reference/current/histogram.html

Value Count

这种聚合方式会回传指定字段的统计数量

先定个目标,假设我们今天想知道资工一2的班级人数
query

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

aggs query:

"aggs": {
  "class_count": {
    "value_count": {
      "field": "class"
    }
  }
}

组合起来的query:

{
  "query": {
    "term": {
      "class": "资工一2"
    }
  },
  "aggs": {
    "class_count": {
      "value_count": {
        "field": "class"
      }
    }
  }
}

结果:

"aggregations" : {
  "class_count" : {
    "value" : 3
  }
}

一样有针对histogram fields的应用,想了解可以去:
https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-metrics-valuecount-aggregation.html

今天的文章就到这边,谢谢大家


<<:  【I Love Vue 】 Day 28 爱荷华博弈任务(九) - 结算画面

>>:  【Day 27】情境模拟:该如何协助设计师,提供可以执行的设计稿 !?

[Day-23] R语言 - 分群应用(四) 建构新特徵 ( generate feature by clustering in R.Studio )

您的订阅是我制作影片的动力 订阅点这里~ 影片程序码 ## 应用四: 建构特徵 #### # 用GM...

[Day 30] 终於结束了OMG

刚开始一定要先恭喜自己,我完成了!! 再发第一天文之前完全不觉得自己有办法可以胜任这个挑战,没想到我...

【Day23】导航元件 - Pagination

元件介绍 Pagination 是一个分页元件,当页面中一次要载入过多的资料时,载入及渲染将会花费更...

给网站架设初心者:初阶观念与趋势剖析

网站,可以让你在网路世界有个发声的立足点。拥有自己的网站可以扩大影响范围,让使用者能透过浏览网站从色...

Time Machine 的备份提案

一般来说,资料的备份策略从规模的小到大,我们可以有几种选择,如果只是小规模的、轻量的,通常是烧成备...