5]데이터 집계
: 데이터를 그룹화하여 각종 통계지표를 제공하는 집계기능을 공식적으로 제공
5.1]집계
: 데이터를 그룹화하고 통계를 구하는 기능으로 5.0버전이후 기능이 대폭 강화
5.1.1]엘라스틱서치와 데이터 분석
: 엘라스틱은 SQL보다 더욱 강력한 집계기능을 제공하며 인덱스를 활용해 분산 처리가 가능하기 때문에 더 많은 데이터를 빠르게 집계가 가능
5.1.2]엘라스틱서치가 집계에 사용하는 기술
▶캐시
: 마스터 노드가 여러 노드에 있는 데이터를 집계해 질의에 답한다.
: 데이터의 양이 클수록 집계에 많은 양의 CPU와 메모리 자원이 소모되며 응답에 걸리는 시간이 길어진다 > 캐시를 이용하여 해결(질의 결과를 캐시에 저장하여 같은 질의에대한 응답을 보관된 결과를 반환)
: 일반적으로 힙메모리의 1%을 할당하며 conf/elasticsearch.yml을 통해 설정(indices.requests.cache.size:2%)
- Node query Cache : 노드의 모든 샤드가 공유하는 LRU 캐시
- Shard request Cache : 샤드는 데이터를 분산 저장하기 위한 단위로 독립인덱스라고 하며 해당 샤드에 수행된 쿼리의 결과를 캐싱(업데이트가 빈번하면 오히려 성능저하)
- Field data Cache : 집계 연산을 수행할 대는 모든 필드 값을 메모리에 로드 > 계산되는 동안의 필드 값을 메모리에 보관
5.1.4]Aggregation API 이해하기
: 기존 쿼리에 집계 구문을 추가하는 방식으로 수행 > 집계후 버킷목록에 속한 문서의 집합이 출력
▶집계구문의 구조
"aggregations" : {
"<aggregation_name>" : {
"<aggregation_type>" : {
<aggregation_body>
}
[,"meta" : {<meta_data_body>}]?
[,"aggregations" : {[<sub_aggregation>]+}]?
}
[,"<aggregation_name_2>" : {...}]*
}
▶집계영역
: 쿼리영역 생략시 match_all로 판단
{
"query":{ ----------- 쿼리영역
"constant_score":{
"filter":{
"match":
}
}
},
"aggs:{ ------------- 집계영역
"<집계이름>":{
"<집계타입>"{
"field":<필드명>"
}
}
},
"<집계이름>":
"global" :{}
"aggs":{
"<집계이름>":{
"<집계타입>"{
"field":<필드명>"
}
}
}
}
}
: 쿼리 결과에서의 집계가 아닌 전체에서의 집계를 수행하고자 할시 클로벌 버킷을 사용.
5.2] 메트릭 집계
: 특정 필드에 대한 합이나 평균을 계산하거나 다른 집계와 중첩해서 결과에 대해 특정 필드의 _score값에 따라 정렬을 수행하거나 지리 정보를 통해 범위 계산을 하는 등의 다양한 집계를 수행할 수있다.
5.2.1]합산집계
: 집계 타입 - sum을 사용
5.2.2]평균집계
: 집계 타입 - avg를 사용
5.2.3]최솟값 집계
: 집계 타입 - min을 사용
5.2.4] 최대값 집계
: 집계 타입 - max를 타입
5.2.5] 개수집계
: 집계 타입 - value_count를 사용
5.2.6]통계 집계
: 집계 타입 - stats를 사용하는 다중 집계로 위의 합, 평균, 최소값, 최대값 그리고 개수를 한번에 구할 수 있다.
5.2.7]확장 통계 집계
: 집계 타입 - extended_stats을 사용하는 다중 집계로 위 결과에 표준편차와 같은 통곗값이 추가된다.
5.2.8]카디널리티 집계
: 집계 타입 - terms을 사용하며 중복을 제외한 고유한 값에 대한 집계를 수행하는데 모든 문서에 대해 중복된 값을 집계하는 것은 성능에 영향을 주므로 근사치를 통해 집계 수행
5.2.9]백분위 수 집계
: 집계 타입 - percentiles를 통해 백분위 구간별 개수를 집계하며, 지정된 백분위 외 직접 백분위를 입력할수 있다.
5.2.10]백분위 수 랭크 집계
: 집계 타입 - percentile_rank를 사용하며 해당 수치의 백분위 수를 얻을 수 있음.
5.2.11]지형 경계 집계
: 지형 경계 집계를 사용하기 위해서는 필드의 타입이 geo_point여야한다.
'Computer > Study' 카테고리의 다른 글
엘라스틱서치 실무가이드(4-2) (0) | 2020.01.08 |
---|---|
엘라스틱서치 실무가이드(4-1) (0) | 2019.12.19 |
엘라스틱서치 실무가이드(3-2) (0) | 2019.12.10 |
엘라스틱서치 실무가이드(3-1장) (0) | 2019.12.04 |
엘라스틱서치 실무가이드(1장, 2장) (0) | 2019.11.27 |