Redisearch 집계
Redisearch 집계 (Aggregations)
Redisearch의 FT.AGGREGATE는 검색 결과에 대해 그룹화와 통계 계산을 수행하는 기능이에요. SQL의 GROUP BY처럼 특정 필드 값으로 묶고, 합계·평균·개수 같은 집계를 더할 수 있어요. 대시보드나 분석 화면을 만들 때 유용해요.
출처: https://redis.io/docs/latest/develop/data-types/search/aggregations/
기본 집계 구조
FT.AGGREGATE에 인덱스명, 쿼리, 그리고 파이프라인 형태의 집계 단계를 이어 붙여요. 예를 들어 책을 장르별로 묶어 개수를 세려면 이렇게 해요.
FT.AGGREGATE idx:books "*" \
GROUPBY 1 @genre \
REDUCE COUNT 0 AS num_books
GROUPBY로 묶을 필드를, REDUCE로 집계 함수와 결과 별칭(AS)을 지정해요.
집계 함수
대표적인 집계 함수는 다음과 같아요.
COUNT– 개수SUM– 합계AVG– 평균MIN/MAX– 최솟값 / 최댓값STDDEV– 표준편차QUANTILE– 백분위수
숫자 필드의 합계를 구하려면 이렇게 해요.
FT.AGGREGATE idx:books "@genre:{fantasy}" \
GROUPBY 0 \
REDUCE SUM 1 @price AS total_price
여기서 GROUPBY 0은 아무 필드로도 묶지 않고 전체를 하나로 처리할 때 쓰는 표기예요.
정렬과 페이지네이션
SORTBY로 결과를 정렬하고, LIMIT로 개수를 제한해요.
FT.AGGREGATE idx:books "*" \
GROUPBY 1 @genre \
REDUCE COUNT 0 AS num_books \
SORTBY 2 @num_books DESC \
LIMIT 0 10