반응형
Recent Posts
Recent Comments
관리 메뉴

개발잡부

[es] top_hit 본문

ElasticStack/Elasticsearch

[es] top_hit

닉의네임 2024. 10. 15. 15:43
반응형

Elasticsearch의 top_hits 집계는 각 버킷에 대해 상위 N개의 문서를 검색할 수 있는 메트릭 집계 유형입니다. 예를 들어 terms, date_histogram 같은 버킷 집계와 함께 사용하여, 버킷별로 샘플 문서를 가져오고자 할 때 유용합니다. 이때 avg, sum과 같은 메트릭 값을 계산하는 대신, 실제 문서를 직접 조회하는 방식입니다.

예시: 카테고리별 상위 인기 게시글

예를 들어, 블로그 게시글을 저장한 인덱스가 있고, 각 문서에는 title, category, views 필드가 있다고 가정합시다. 카테고리별로 조회수가 가장 높은 게시글 3개를 검색하고자 할 때 아래와 같은 쿼리를 사용할 수 있습니다.

 

GET /your_index/_search
{
  "size": 0,
  "aggs": {
    "categories": {
      "terms": {
        "field": "category.keyword"
      },
      "aggs": {
        "top_articles": {
          "top_hits": {
            "sort": [
              {
                "views": {
                  "order": "desc"
                }
              }
            ],
            "size": 3,
            "_source": ["title", "views"]
          }
        }
      }
    }
  }
}

 

쿼리 설명

  • "size": 0: 최상위 검색 결과는 필요하지 않으므로 0으로 설정하여 문서 검색 결과를 반환하지 않도록 합니다. 오직 집계 결과만 필요합니다.
  • "terms" 집계: 각 category에 대해 버킷을 생성합니다.
  • "top_hits" 집계: 각 카테고리 버킷에 대해, views 필드의 내림차순으로 상위 3개의 문서를 가져옵니다.
  • "_source": ["title", "views"]: 반환할 필드를 title과 views로 제한합니다.

이러한 방식으로, Elasticsearch의 top_hits 집계를 사용하여 버킷별로 상위 문서를 손쉽게 조회할 수 있습니다.

반응형

'ElasticStack > Elasticsearch' 카테고리의 다른 글

[es] Shard 구성 변경  (0) 2024.08.13
[es] 샤드 구성 변경 테스트  (0) 2024.08.08
[es] data node cpu 튀는 현상  (0) 2024.07.31
[es] data node cpu 안정화  (1) 2024.07.19
[es] 엘라스틱서치 샤드 최적화  (0) 2024.06.28
Comments