반응형
Aggregation
정의 : 엘라스틱 안에서 조합을 통해 어떤 값을 도출 하는 것을 의미
metric aggregation
정의 : 상수 aggregation 하는 것
{
"size" : 0,
"aggs" : {
"avg_score" : {
"avg" : {
"field" : "points"
}
}
}
}
- size : 결과값에 보고싶은것만 보기 위해서 사용
- aggs : aggregation을 사용한다는 뜻
- avg : 평균정보
- field : 어떤 정보 사용
agg 실행
curl -H "Content-Type: application/json" -XPOST "http://localhost:9200/_search?pretty" --data-binary @avg_points_aggs.json
결과
{
"took" : 10,
"timed_out" : false,
"_shards" : {
"total" : 3,
"successful" : 3,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : {
"value" : 33,
"relation" : "eq"
},
"max_score" : null,
"hits" : [ ]
},
"aggregations" : {
"avg_score" : {
"value" : 25.0
}
}
}
모든 결과 조회 연산 : stats
{
"size" : 0,
"aggs" : {
"stats_score" : {
"stats" : {
"field" : "points"
}
}
}
}
결과
{
"took" : 2,
"timed_out" : false,
"_shards" : {
"total" : 3,
"successful" : 3,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : {
"value" : 33,
"relation" : "eq"
},
"max_score" : null,
"hits" : [ ]
},
"aggregations" : {
"stats_score" : {
"count" : 2,
"min" : 20.0,
"max" : 30.0,
"avg" : 25.0,
"sum" : 50.0
}
}
}
Bucket Aggregation
정의 : 하나의 정보에 대해서 grouping해주는 것 -> mysql group by와 유사
aggregation 코드
{
"size" : 0,
"aggs" : {
"players" : {
"terms" : {
"field" : "team"
}
}
}
}
- team에 대해서 grouping 하기
stats bucket aggregation
{
"size" : 0,
"aggs" : {
"team_stats" : {
"terms" : {
"field" : "team"
},
"aggs" : {
"stats_score" : {
"stats" : {
"field" : "points"
}
}
}
}
}
}
- team별로 도큐멘트로 grouping 하고, team별로 point 통계 정볼르 표현 해야 한다.
반응형
'Elasticsearch > 간단한 실습' 카테고리의 다른 글
02. REST API를 사용하기 (0) | 2021.05.20 |
---|---|
01. Elasticsearch 기본 개념 정리 (0) | 2021.05.20 |