Redis Search 쿼리 하기
Redis Search 쿼리 하기 (Querying data)
Redis 오픈소스는 쿼리 명령으로 FT.SEARCH와 FT.AGGREGATE를 구분합니다. 선택(selection)과 투영(projection)만 하려면 FT.SEARCH를 쓰고, 매핑 함수 적용·그룹화·집계도 필요하다면 FT.AGGREGATE를 씁니다.
- 선택(selection): 특정 기준을 충족하는 모든 문서를 반환하는 것.
- 투영(projection): 결과 집합의 특정 필드를 반환하는 것. 계산된 필드 값으로 매핑/투영할 수도 있습니다.
- 집계(aggregation): 여러 필드에 걸쳐 데이터를 모아 요약하는 것.
출처: https://redis.io/docs/latest/develop/ai/search-and-query/query/
SQL vs Redis 쿼리 비교
자전거 데이터셋(bicycles.txt)을 이용한 짧은 SQL 비교:
| 유형 | SQL | Redis |
|---|---|---|
| 선택 | SELECT * FROM bicycles WHERE price >= 1000 |
FT.SEARCH idx:bicycle "@price:[1000 +inf]" |
| 단순 투영 | SELECT id, price FROM bicycles |
FT.SEARCH idx:bicycle "*" RETURN 2 __key, price |
| 계산 투영 | SELECT id, price-price*0.1 AS discounted FROM bicycles |
FT.AGGREGATE idx:bicycle "*" LOAD 2 __key price APPLY "@price-@price*0.1" AS discounted |
| 집계 | SELECT condition, AVG(price) AS avg_price FROM bicycles GROUP BY condition |
FT.AGGREGATE idx:bicycle "*" GROUPBY 1 @condition REDUCE AVG 1 @price AS avg_price |
표를 보면 알 수 있듯, 선택·단순 투영은 FT.SEARCH로, 계산 투영·집계는 FT.AGGREGATE로 처리합니다.
FT.SEARCH 쿼리 유형
다음 문서들이 FT.SEARCH 명령으로 데이터를 쿼리하는 방법을 다룹니다.
- 정확 일치 쿼리 (Exact match)
- 범위 쿼리 (Range)
- 전문 검색 (Full-text search)
- 지리공간 쿼리 (Geospatial)
- 벡터 검색 (Vector search)
- 결합 쿼리 (Combined queries)
FT.AGGREGATE 집계 쿼리
FT.AGGREGATE로 집계 쿼리하는 더 자세한 내용은 다음 문서에서 볼 수 있습니다.
더 알아보기 (Learn more)
- JSON 문서 인덱싱: Indexing
- 쿼리 문법 상세: Search query syntax
- Redis 검색·쿼리 개요: Redis Search and Query
- 관련 명령: FT.SEARCH, FT.AGGREGATE