일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- tool
- 요리
- Web Server
- php
- devops
- linux
- Git
- Spring
- elasticsearch
- jsp
- MySQL
- jenkins
- Spring Batch
- Gradle
- redis
- AWS
- springboot
- db
- it
- JVM
- ubuntu
- IntelliJ
- javascript
- 맛집
- java
- Spring Boot
- Design Patterns
- laravel
- ReactJS
- Oracle
Archives
- Today
- Total
아무거나
버킷 어그리게이션(Bucket Aggregation) 본문
반응형
버킷 어그리게이션(Bucket Aggregation)
* 메트릭 어그리게이션과는 다르게 버킷 어그리게이션은 group by라고 보면 된다.
예를 들어 그룹별로 결과값을 도출할때 사용한다.
1. curl -XPUT localhost:9200/basketball // 인덱스생성
2. sudo vi basketball_mapping.json // 매핑 데이터 생성
# [basketball_mapping.json]
{
"record" : {
"properties" : {
"team" : {
"type" : "string",
"fielddata" : true
},
"name" : {
"type" : "string",
"fielddata" : true
},
"points" : {
"type" : "long"
},
"rebounds" : {
"type" : "long"
},
"assists" : {
"type" : "long"
},
"blocks" : {
"type" : "long"
},
"submit_date" : {
"type" : "date",
"format" : "yyyy-MM-dd"
}
}
}
}
3. curl -XPUT 'localhost:9200/basketball/record/_mapping' -d @basketball_mapping.json // mapping 파일을 elasticsearch에 적용
4. sudo vi twoteam_basketball.json // 도큐먼트에 넣을 json데이터 작성
# [twoteam_basketball.json] // 시카고팀2개, LA팀 2개
{ "index" : { "_index" : "basketball", "_type" : "record", "_id" : "1" } }
{"team" : "Chicago","name" : "Michael Jordan", "points" : 30,"rebounds" : 3,"assists" : 4, "blocks" : 3, "submit_date" : "1996-10-11"}
{ "index" : { "_index" : "basketball", "_type" : "record", "_id" : "2" } }
{"team" : "Chicago","name" : "Michael Jordan","points" : 20,"rebounds" : 5,"assists" : 8, "blocks" : 4, "submit_date" : "1996-10-13"}
{ "index" : { "_index" : "basketball", "_type" : "record", "_id" : "3" } }
{"team" : "LA","name" : "Kobe Bryant","points" : 30,"rebounds" : 2,"assists" : 8, "blocks" : 5, "submit_date" : "2014-10-13"}
{ "index" : { "_index" : "basketball", "_type" : "record", "_id" : "4" } }
{"team" : "LA","name" : "Kobe Bryant","points" : 40,"rebounds" : 4,"assists" : 8, "blocks" : 6, "submit_date" : "2014-11-13"}
5. curl -XPOST 'localhost:9200/_bulk' --data-binary @twoteam_basketball.json // bulk옵션을 사용하여 여러개의 도큐먼트를 한번에 넣는다.
6. sudo vi terms_aggs.json 생성
# [terms_aggs.json]
{
"size" : 0, // 우리가 여러개의 정보가 도출되는 대신에 우리가 원하는 aggs정보만 보기위해 일부로 0으로 했음
"aggs" : {
"players" : { // aggs의 네임을 players라고 함
"terms" : {
"field" : "team" // team별로 도큐먼트를 묶기위해서 field를 team으로 지정
}
}
}
}
7. curl -XGET localhost:9200/_search?pretty --data-binary @terms_aggs.json // 결과를 확인하면 팀별로 도큐먼트 개수가 나온다.
8. 위의 실습들을 응용하여 각 팀별로 성적을 보는걸 분석해보자.
- 버킷 어그리게이션은 서브 어그레이션을 포함할수도 있다.
- sudo vi stats_by_team.json
# [stats_by_team.json]
{
"size" : 0,
"aggs" : {
"team_stats" : {
"terms" : {
"field" : "team" // 도큐먼트를 팀별로 묶는다
},
"aggs" : {
"stats_score" : {
"stats" : { // 각 팀별로 통계 분석을 표시하라..
"field" : "points"
}
}
}
}
}
}
- curl -XGET localhost:9200/_search?pretty --data-binary @stats_by_team.json // 팀별로 분석한 결과가 도출된다.
반응형
'Data Store > Elastic Stack' 카테고리의 다른 글
Kibana 설치 (0) | 2019.05.13 |
---|---|
모든 인덱스 삭제 및 방어 (0) | 2019.05.13 |
메트릭 어그리게이션(Metric Aggregation) (0) | 2019.05.09 |
데이터 조회 (0) | 2019.05.09 |
MAPPING (SCHEMA) (0) | 2019.05.08 |
Comments