본문 바로가기
Elasticsearch/간단한 실습

03. Aggregation

by clearinging 2021. 5. 23.
반응형

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