ES实战-聚集

根据某字段值聚集返回统计数据

bash 复制代码
#curl 写法
curl 'localhost:9200/get-together/_search?pretty' -H 'Content-Type:application/json' -d '{
"aggs":{
	"top_tags":{
	"terms":{
		"field":"tags.verbatim"
		}
	}
}}'
# kibana主体写法
GET /get-together/_search
{
  "aggs": {
    "top_tags": {
      "terms": {
        "field": "tags.verbatim"
      }
    }
  }
}

Elasticsearch提供了多种聚合类型,用于不同的分析目的

1.terms聚合-适用于统计字段值的分布情况

2.avg:计算平均值。

3.sum:计算总和。

4.min和max:找到最小值和最大值。

5.histogram:按照数值区间分桶。

6.date_histogram:按照时间间隔分桶。

7.range:基于预定义的范围分桶。

8.cardinality:计算字段的基数(不同值的数量)。

等等。
在指定查询条件情况下聚合

bash 复制代码
GET /get-together/_search
{
  "query": {
    "match": {
      "name":"Denver"
    }
  }, 
  "aggs": {
    "top_tags": {
      "terms": {
        "field": "tags.verbatim"
      }
    }
  }
}

聚合某个数组类型的字段

bash 复制代码
#其中的stats 还可以换成avg min max sum value_count
GET /get-together/_search?pretty
{
  "size": 0,
  "aggs": {
    "attendees_stats": {
      "stats": {
        "script": {
          "source": "doc['attendees'].size()"
        }
      }
    }
  }
}
#使用extended_stats 聚合获取平方,方差,标准差
GET /get-together/_search?pretty
{
  "size": 0,
  "aggs": {
    "attendees_stats": {
      "extended_stats": {
        "script": {
          "source": "doc['attendees'].size()"
        }
      }
    }
  }
}

Percentiles 聚合

bash 复制代码
#percentiles聚合用于计算一个字段的百分位数,可以帮助你了解数据的分布。
GET /_search
{
  "aggs": {
    "grade_percentiles": {
      "percentiles": {
        "field": "grade",
        "percents": [25, 50, 75]  // 可以指定需要的百分位数
      }
    }
  }
}

Percentile Ranks 聚合

bash 复制代码
#percentile_ranks聚合显示了值在数据分布中的排名百分位。
GET /_search
{
  "aggs": {
    "grade_percentile_ranks": {
      "percentile_ranks": {
        "field": "grade",
        "values": [60, 70, 80]  // 你想知道这些值的百分位排名
      }
    }
  }
}

Cardinality 聚合

bash 复制代码
#cardinality聚合用于计算字段中不同值的数量,类似于SQL中的COUNT(DISTINCT field)。
GET /_search
{
  "aggs": {
    "unique_grades": {
      "cardinality": {
        "field": "grade"
      }
    }
  }
}
相关推荐
热爱嵌入式的小许2 小时前
Linux基础项目开发1:量产工具——显示系统
linux·运维·服务器·韦东山量产工具
hengzhepa4 小时前
ElasticSearch备考 -- Async search
大数据·学习·elasticsearch·搜索引擎·es
韩楚风6 小时前
【linux 多进程并发】linux进程状态与生命周期各阶段转换,进程状态查看分析,助力高性能优化
linux·服务器·性能优化·架构·gnu
陈苏同学6 小时前
4. 将pycharm本地项目同步到(Linux)服务器上——深度学习·科研实践·从0到1
linux·服务器·ide·人工智能·python·深度学习·pycharm
Ambition_LAO6 小时前
解决:进入 WSL(Windows Subsystem for Linux)以及将 PyCharm 2024 连接到 WSL
linux·pycharm
Pythonliu77 小时前
茴香豆 + Qwen-7B-Chat-Int8
linux·运维·服务器
你疯了抱抱我7 小时前
【RockyLinux 9.4】安装 NVIDIA 驱动,改变分辨率,避坑版本。(CentOS 系列也能用)
linux·运维·centos
追风赶月、7 小时前
【Linux】进程地址空间(初步了解)
linux
栎栎学编程7 小时前
Linux中环境变量
linux
挥剑决浮云 -7 小时前
Linux 之 安装软件、GCC编译器、Linux 操作系统基础
linux·服务器·c语言·c++·经验分享·笔记