在ElasticSearch中,度量聚合是一种用于计算数值统计信息的聚合。这些信息包括最小值、最大值、平均值、总和等。
以下是一些使用ElasticSearch的REST API进行度量聚合的例子:
- 计算文档的平均值:
GET /exams/_search
{
"size": 0,
"aggs" : {
"average_grade" : { "avg" : { "field" : "grade" } }
}
}
在这个例子中,我们计算了所有文档的"grade"字段的平均值。"size": 0表示我们不需要获取任何文档,只需要聚合结果。
- 计算文档的最大值和最小值:
GET /exams/_search
{
"size": 0,
"aggs": {
"min_grade": { "min": { "field": "grade" } },
"max_grade": { "max": { "field": "grade" } }
}
}
在这个例子中,我们计算了"grade"字段的最小值和最大值。
- 计算文档的总和:
GET /exams/_search
{
"size": 0,
"aggs" : {
"sum_grade" : { "sum" : { "field" : "grade" } }
}
}
在这个例子中,我们计算了所有文档的"grade"字段的总和。
- 计算文档的平方和:
GET /exams/_search
{
"size": 0,
"aggs" : {
"square_sum_grade" : { "sum" : { "field" : "grade", "script": "doc.grade.value * doc.grade.value" } }
}
}
在这个例子中,我们计算了所有文档的"grade"字段的平方的总和。
- 计算文档的标准差:
GET /exams/_search
{
"size": 0,
"aggs": {
"std_deviation_grade": {
"std_deviation": {
"field": "grade"
}
}
}
}
在这个例子中,我们计算了所有文档的"grade"字段的标准差。
- 计算文档的百分位数:
GET /exams/_search
{
"size": 0,
"aggs": {
"percentile_grade": {
"percentiles": {
"field": "grade",
"percents": [1, 5, 25, 50, 75, 95, 99]
}
}
}
}
在这个例子中,我们计算了所有文档的"grade"字段的1、5、25、50、75、95和99百分位数。
- 计算文档的统计信息:
GET /exams/_search
{
"size": 0,
"aggs": {
"stats_grade": {
"stats": {
"field": "grade"
}
}
}
}
在这个例子中,我们计算了所有文档的"grade"字段的最小值、最大值、平均值、总和和标准差。
- 计算文档的值的分布:
GET /exams/_search
{
"size": 0,
"aggs": {
"histogram_grade": {
"histogram": {
"field": "grade",
"interval": 5