ElasticSearch 搜索引擎入门到实战 16-- 聚合查询之指标聚合

ES聚合分析

  1. 聚合分析是数据库中重要的功能特性,完成对⼀个查询的数据集中数据的聚合计算,如:找出某字段(或计算表达式的结果)的最⼤值、最⼩值,计算和、平均值等。ES作为搜索引擎兼数据库,同样提供了强⼤的聚合分析能⼒。
  2. 对⼀个数据集求最⼤、最⼩、和、平均值等指标的聚合,在ES中称为指标聚合
  3. ⽽关系型数据库中除了有聚合函数外,还可以对查询出的数据进⾏分组group by,再在组上进⾏指标聚合。在ES中称为桶聚合

max min sum avg

  • 例如 求出⽕箭队球员的平均年龄
POST /nba/_search
{
  "query": {
    "term": {
      "teamNameEn": {
        "value": "Rockets"
      }
    }
  },
  "aggs": {
    "avgAge别名": {
      "avg": {
        "field": "age"
      }
    }
  },
  "size": 0
}


value_count 统计⾮空字段的⽂档数

  • 求出⽕箭队中球员打球时间不为空的数量
POST /nba/_search
{
  "query": {
    "term": {
      "teamNameEn": {
        "value": "Rockets"
      }
    }
  },
  "aggs": {
    "countPlayerYear别名": {
      "value_count": {
        "field": "playYear"
      }
    }
  },
  "size": 0
}

 
Cardinality 值去重计数

  • 查出⽕箭队中年龄不同的数量
POST /nba/_search
{
  "query": {
    "term": {
      "teamNameEn": {
        "value": "Rockets"
      }
    }
  },
  "aggs": {
    "counAget别名": {
      "cardinality": {
        "field": "age"
      }
    }
  },
  "size": 0
}

 
stats 统计count max min avg sum 5个值

  • 查出⽕箭队球员的年龄stats
POST /nba/_search
{
  "query": {
    "term": {
      "teamNameEn": {
        "value": "Rockets"
      }
    }
  },
  "aggs": {
    "statsAge别名": {
      "stats": {
        "field": "age"
      }
    }
  },
  "size": 0
}


Extended stats ⽐stats多4个统计结果: 平⽅和、⽅差、标准差、平均值加/减两个标准差的区间

  • 查出⽕箭队球员的年龄Extend stats
POST /nba/_search
{
  "query": {
    "term": {
      "teamNameEn": {
        "value": "Rockets"
      }
    }
  },
  "aggs": {
    "extendStatsAge别名": {
      "extended_stats": {
        "field": "age"
      }
    }
  },
  "size": 0
}


Percentiles 占⽐百分位对应的值统计,默认返回[ 1, 5, 25, 50, 75, 95, 99 ]分位上的值

  • 查出⽕箭的球员的年龄占⽐
POST /nba/_search
{
  "query": {
    "term": {
      "teamNameEn": {
        "value": "Rockets"
      }
    }
  },
  "aggs": {
    "pecentAge别名": {
      "percentiles": {
        "field": "age"
      }
    }
  },
  "size": 0
}
  • 查出⽕箭的球员的年龄占⽐(指定分位值用 percents)
POST /nba/_search
{
  "query": {
    "term": {
      "teamNameEn": {
        "value": "Rockets"
      }
    }
  },
  "aggs": {
    "percentAge别名": {
      "percentiles": {
        "field": "age",
        "percents": [
          20,
          50,
          75
        ]
      }
    }
  },
  "size": 0
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值