아무거나

버킷 어그리게이션(Bucket Aggregation) 본문

Data Store/Elastic Stack

버킷 어그리게이션(Bucket Aggregation)

전봉근 2019. 5. 10. 10:53
반응형

버킷 어그리게이션(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