elasticsearch(6)聚合統計-度量聚合
阿新 • • 發佈:2018-11-16
平均值聚合
GET /index/type/_search
{
"size": 0,
"aggs": {
"test_avg": {
"avg": {
"field": "field1"
}
}
}
}
對於缺失統計欄位的資料,預設情況下聚合時會被忽略。可以通過設定missing
引數,給缺失統計欄位的資料一個預設值進行聚合統計。
GET /index/type/_search { "size": 0, "aggs": { "test_avg": { "stats": { "field": "field1", "missing": 0 } } } }
基數聚合
統計某欄位唯一值得個數,相當於SQL中的SELECT COUNT(DISTINCT field1) FROM xxx
。
GET /index/type/_search
{
"size": 0,
"aggs": {
"test_cardinality": {
"cardinality": {
"field": "field1"
}
}
}
}
對於缺失統計欄位的資料,預設情況下聚合時會被忽略。可以通過設定missing
引數,給缺失統計欄位的資料一個預設值進行聚合統計。
GET /index/type/_search { "size": 0, "aggs": { "test_cardinality": { "cardinality": { "field": "field1", "missing": "N/A" } } } }
基數聚合的值並不是一個絕對的準確值,而是一個近似計數。由於es統計到高基數集時需要佔用大量的記憶體,且各個節點之間的溝通也會佔用大量的叢集資源,因此效率較低。引數precision_threshold
允許es為了基數統計的準確性而設定交換記憶體,實際的基數統計值低於precision_threshold
則基數將接近準確,高於該值計數會更模糊,最大值為40000,預設值為3000。
最大值聚合
GET /index/type/_search { "size": 0, "aggs": { "test_max": { "max": { "field": "field1" } } } }
最小值聚合
GET /index/type/_search
{
"size": 0,
"aggs": {
"test_min": {
"min": {
"field": "field1"
}
}
}
}
和聚合
GET /index/type/_search
{
"size": 0,
"aggs": {
"test_sum": {
"sum": {
"field": "field1"
}
}
}
}
值計數聚合
值計數聚合對聚合文件中提取的值進行計數,通常該聚合與其他單值聚合一起使用,例如計算平均聚合時,統計有多少個值參與了平均聚合。
GET /index/type/_search
{
"size": 0,
"aggs": {
"test_avg": {
"avg": {
"field": "field1"
}
},
"test_value_count": {
"value_count": {
"field": "field1"
}
}
}
}
統計聚合
統計聚合是多個單值聚合的彙總,包含:最小值、最大值、和、計數、平均值。
GET /index/type/_search
{
"size": 0,
"aggs": {
"test_stats": {
"stats": {
"field": "field1"
}
}
}
}
百分比聚合
GET /index/type/_search
{
"size": 0,
"aggs": {
"test_percentiles": {
"percentiles": {
"field": "field1"
}
}
}
}
預設情況下,百分比指標會計算一系列百分比:1、5、25、50、75、95、99,也可以自定義需要計算的百分比。
GET /index/type/_search
{
"size": 0,
"aggs": {
"test_percentiles": {
"percentiles": {
"field": "price",
"percents": [
1,
5,
25,
50,
75,
95,
99
]
}
}
}
}
百分比分級聚合
計算測試值低於指定值得百分比。
GET /index/type/_search
{
"size": 0,
"aggs": {
"test_percentile_ranks": {
"percentile_ranks": {
"field": "field1",
"values": [
10,
20
]
}
}
}
}