Elasticsearch Sampler Aggregation 테스트 후기

min·2023년 9월 14일
0

🐘 Elasticsearch

목록 보기
3/6

일일 1.5억건 정도 되는 데이터를 통계해서 보여주는 과정을 진행했는데 속도가 말도 안되게 느렸다.
수집에서 필터링, 샘플링 하는 것도 고려를 했지만 조회 할 때도 필요하다고 판단해서 Elasticsearch의 Sampler Aggregation을 확인해보기로 함.

데이터 샘플링을 통해서 보여주기로 했다.
Google Anayltics도 방대한 데이터에 대해서 샘플링 방식을 제공하고 있다고 함.

Sampler Aggregation

  • ElasticSearch에서 집계 방식 중 하나
  • 전체 데이터에서 일정 표본 크기(shard size) 만큼 뽑아 집계하는 방법

Elasticsearch Docs:
A filtering aggregation used to limit any sub aggregations' processing to a sample of the top-scoring documents.
하위 집합의 처리를 최상위 점수 문서의 샘플로 제한하는 데 사용되는 필터링 집합입니다.
Example use cases:
Tightening the focus of analytics to high-relevance matches rather than the potentially very long tail of low-quality matches
Reducing the running cost of aggregations that can produce useful results using only samples e.g. significant_terms
분석의 초점을 저품질 매치의 잠재적으로 매우 긴 꼬리보다는 관련성이 높은 매치로 강화
샘플만을 사용하여 유용한 결과를 얻을 수 있는 집계의 실행 비용 절감

aggregation 하위의 sampler를 통해 샘플링 집계 할 수 있음.
shard_size에 따라 각 shard에서 몇개의 데이터를 뽑을 지 확인 할 수 있다.

POST /stackoverflow/_search?size=0
{
    "query": {
        "query_string": {
            "query": "tags:kibana OR tags:javascript"
        }
    },
    "aggs": {
        "sample": {
            "sampler": {
                "shard_size": 200
            },
            "aggs": {
                "keywords": {
                    "significant_terms": {
                        "field": "tags",
                        "exclude": ["kibana", "javascript"]
                    }
                }
            }
        }
    }
}

샘플링 집계 테스트를 진행 했을 때 실제로 비슷한 비율로 데이터가 뽑히기는 했지만 많은 애들에 대해서는 더 많이 뽑혀서 (점수 계산 때문이라고 생각함) 통계적으로 문제 있기는 했음.
하지만 일단 이런 부분에 흥미로웠음.

데이터 조회 속도가 빨라지기는 했지만 통계에 대한 정확도는 shard_size가 100배 차이난다고 해도 그렇게 많이 차이가 나지는 않았다.

참고
https://medium.com/cognigo/improve-heavy-elasticsearch-aggregations-with-random-score-and-sampler-aggregation-9e1857271059

profile
기록으로 기억하기

0개의 댓글