ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Elasticsearch] 집계 기초
    IT 발자취.../Elastic Stack 2018. 12. 24. 00:33

    [일래스틱스택6 입문] 서적을 참고하여 정리하고 있습니다. 문제가 있을시 댓글 또는 연락 주시면 수정하도록 하겠습니다.


    엘라스틱 서치가 지원하는 집계는 네 가지 타입으로 구분할 수 있습니다.

    • Bucket 집계
    • Metric 집계
    • Matrix 집계
    • Pipeline 집계

    Bucket 집계

    버킷 키로 식별되는 여러 버킷쿼리 컨텍스트에서 정의된 문제의 데이터를 분할한다.

    Bucket 집계는 컨텍스트에 있는 각 도큐먼트가 어떤 버킷에 속해 있는지 결정해 평가한다. 

    결국 Bucket 집계는 개별 버킷 키버킷에 속하는 도큐먼트가 있는 버킷 집합을 갖는다.

    SQL을 사용한 경험이 있다면 다음과 같이 GROUP BY 절이 있는 쿼리라고 생각하면 된다.


     SELECT colum1, count(*) FROM table1 GROUP BY column1; 


    • 해당 쿼리는 column1에 속한 값을 나눈 후, column1 개별 값의 도큐먼트 수를 반환 한다. 이는 Bucket 집계 예제다. 
    • 엘라스틱 서치가 지원하는 다양한 Bucket 집계 타입이 있다.
    • Bucket 집계는 집계 쿼리에서 최상단 혹은 가장 바깥 레벨에 위치할 수 있다. 
    • 게다가 Bucket 집계는 다른 Bucket 집계 내부에 중첩해 사용할 수 있다.

    Metric 집계


    • 필드에서 숫자 타입으로 동작하며, 주어진 컨텍스트에서 숫자 필드의 집계값을 계산하는데 사용한다.
    • 예를 들어, 학생들의 시험 결과를 가진 테이블이 있다고 가정해보자. 각 레코드는 학생별 점수를 포함한다. Metric 집계는 숫자 점수 열에서 서로 다른 집계를 계산할 수 있다. 예를 들면, 합계, 평균값, 최솟값, 최댓값 등이다. SQL 용어에서 다음 쿼리는 metric 집계가 수행하는 방식과 유사하게 동작한다.
     SELECT avg(score) FROM results; 
    • 해당 쿼리는 주어진 컨텍스트에서 평균 점수를 계산한다. 여기에서 컨텍스트는 전체 테이블, 즉 모든 학생을 말한다.
    • 이것이 Metric 집계의 예다. Metric 집계는 집계 쿼리에서 최상단 혹은 가장 바깥 레벨에 위치할 수 있다. 
    • 게다가 Metric 집계는 Bucket 집계 내부에 중첩해 사용할 수 있다. 
    • Metric 집계는 내부에 다른 집계 타입과는 중첩해 사용할 수 없다.

    Matrix 집계
    • 엘라스틱서치 버전 5.0에서 도입된 Matrix 집계는 여러 필드에서 동작하고 쿼리 컨텍스트 내의 모든 도큐먼트에 걸쳐 메트릭을 계산한다. 
    • Matrix 집계는 Bucket 집계에 중첩해 사용할 수 있지만, Bucket 집계는 Matrix 내부에 중첩될 수 없다. 이는 비교적 새로운 기능이다. 
    Pipleline 집계


    • 다른 타입의 집계 결과를 다시 집계할 수 있는 상위 레벨의 집계다. 
    • 파생 상품과 같은 예제를 계산할 때 유용하게 사용할 수 있다.
    • 즉, 엘라스틱서치가 상위 레벨에서 제공하는 다양한 타입 집계를 기반으로 한다.


    댓글

Designed by Gintire