Metric집계 : 필드에서 숫자 타입으로 동작.

주어진 테이블에서 숫자필드의 집계값을 계산. - 합계,평균,최소,최대 등 (단, Metric집계는 다른 집계타입과 중첩불가)

GET 인덱스명/_search
{
 "aggs": {                                
    "작명": {    < = 구별하기 쉬운 이름으로 설정
      "sum/avg/min/max": {   < = 계산식
        "field": "필드명"     < = 계산될 필드
      }      
    }
  },
  "size": 0     < = 결과값은 반환하지 않고 집계값만 반환                       
}

// 예시
GET 인덱스명/_search
{
	"aggs": {
		"connect_total_by_date": {
			"date_histogram": {
        "field": "@timestamp",
        "interval": "day",
        "format": "yyyy-MM-dd",
        "min_doc_count": 1
			},
      "aggs": {
        "total_connect": {
          "sum": {
            "field": "connect_total"
          }
        }
      } // aggs block
		} // connect~~ block
	} // aggs block
}

Stats집계는 단일요청에서 Doc의 합계,평균,최소,최대의 개수를 계산

GET 인덱스명/_search
{
 "aggs": {
    "작명": {
      "stats": {
        "field": "필드명"
      }
    }
  },
  "size": 0
}

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
## 결과값

{
  "took": 33,
  "timed_out": false,
  "_shards": {
    "total": 5,
    "successful": 5,
    "skipped": 0,
    "failed": 0
  },
  "hits": {
    "total": 242835,
    "max_score": 0,
    "hits": []
  },
  "aggregations": {
    "필드명": {
      "count": 242835,
      "min": 0,                    < = 최소.
      "max": 241213,               < = 최대.
      "avg": 9049.102065188297,    < = 평균.
      "sum": 2197438700            < = 합계.
    }
  }
}

Extended Stats집계는 Stats결과에 통계정보 추가

## Stats결과값에 추가된 항목

"aggregations": {
    "download_estats": {
      "count": 242835,
      "min": 0,
      "max": 241213,
      "avg": 9049.102065188297,
      "sum": 2197438700,
      "sum_of_squares": 133545882701698,        < = 제곱.
      "variance": 468058704.9782911,            < = 분산.
      "std_deviation": 21634.664429528162,      < = 표준 편차.

      "std_deviation_bounds": {                 < = 표준 편차 구간.
        "upper": 52318.43092424462,
        "lower": -34220.22679386803
      }
    }
  }
}

Cardinality집계

특정 요소의 개수를 찾는데 유용

GET ncurion-alert-*/_search
{
    "aggs": {
      "sip_cnt": {
         "cardinality": {
            "field": "src_ip.keyword"  // src_ip가 keyword가 아닌 타입이라 명시적 지정
        }
      },
      "sport_cnt": {
        "cardinality": {
          "field": "src_port"
        }
      },
      "dip_cnt": {
        "cardinality": {
          "field": "dest_ip.keyword"   // dest_ip가 keyword가 아닌 타입이라 명시적 지정
        }
      },
      "dport_cnt": {
        "cardinality": {
          "field": "dest_port"
        }
      },
	}
}

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
## 결과값 중 aggs부분만

"aggregations" : {
    "sport_cnt" : {
      "value" : 6
    },
    "sip_cnt" : {
      "value" : 2476
    },
    "dport_cnt" : {
      "value" : 2
    },
    "dip_cnt" : {
      "value" : 241
    }
}

Bucket집계(terms,histogram,date_histogram 등)

Bucket key 로 식별되는 여러 Bucket 쿼리 컨텍스트(테이블)에서 정의된 문제의 데이터를 분할하며 Document를 그룹화하는것을 말한다. 즉 SQL의 GRUOP BY 쿼리라고 생각하면된다.