일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- ELASTIC
- Java
- matplotlib
- TensorFlow
- aggregation
- 파이썬
- Elasticsearch
- plugin
- License
- sort
- Python
- licence delete curl
- aggs
- Mac
- Test
- 900gle
- docker
- 차트
- license delete
- flask
- analyzer test
- MySQL
- token filter test
- Kafka
- springboot
- API
- zip 암호화
- high level client
- zip 파일 암호화
- query
Archives
- Today
- Total
개발잡부
[es] top_hit 본문
반응형
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