1. Elasticsearch는 무엇인가?



4. Elasticsearch 는
“분산형 검색 및 분석 엔진”이다.
단순 검색 기능이 아니라
- Full-Text Search
- 로그 분석
- 실시간 집계
- 대용량 데이터 검색
을 고속으로 처리하는 검색 특화 스토리지입니다.
기반 기술은:
- Apache Lucene
- REST API
- JSON 기반 쿼리 DSL
2. Elasticsearch의 주요 용도
1️⃣ 검색 엔진 (가장 대표적인 용도)
- 쇼핑몰 상품 검색
- 게시판 통합 검색
- 자동완성
- 오타 허용 검색
- 형태소 기반 검색 (한글 분석기 사용)
RDB의 LIKE '%keyword%'와는 차원이 다릅니다.
2️⃣ 로그 분석 (ELK 스택)
- 서버 로그 수집
- API 응답시간 분석
- 에러 패턴 추적
ELK 스택:
- Elasticsearch
- Logstash
- Kibana
3️⃣ 실시간 집계 / 대시보드
- 기간별 매출 합계
- 사용자 행동 통계
- 실시간 트래픽 모니터링
RDB보다 대량 집계에 유리합니다.
3. Elasticsearch 기본 사용법 (Spring Boot 기준)
1️⃣ 의존성 추가
implementation 'org.springframework.boot:spring-boot-starter-data-elasticsearch'
2️⃣ 도큐먼트 정의
@Document(indexName = "product")
@Getter
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class ProductDocument {
@Id
private String id;
private String name;
private String description;
private Integer price;
}
@Getter
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class ProductDocument {
@Id
private String id;
private String name;
private String description;
private Integer price;
}
3️⃣ Repository
public interface ProductSearchRepository
extends ElasticsearchRepository<ProductDocument, String> {
List<ProductDocument> findByNameContaining(String keyword);
}
extends ElasticsearchRepository<ProductDocument, String> {
List<ProductDocument> findByNameContaining(String keyword);
}
4️⃣ 검색 쿼리 (DSL 예시)
{
"query": {
"match": {
"name": "laptop"
}
}
}
"query": {
"match": {
"name": "laptop"
}
}
}
REST API 기반이기 때문에
복잡한 쿼리도 JSON으로 구성 가능합니다.
4. Elasticsearch의 장점
🚀 1. 초고속 Full-Text Search
- inverted index 구조
- 형태소 분석
- relevance score 기반 정렬
RDB Full-Text보다 훨씬 정교합니다.
📈 2. 수평 확장 (Scale-Out)
- Shard 기반 분산 저장
- 노드 추가로 성능 확장
대용량 서비스에서 강점.
🔍 3. 다양한 검색 기능
- 자동완성 (autocomplete)
- fuzzy search (오타 허용)
- n-gram 검색
- highlight 기능
검색 서비스에 필요한 기능이 기본 내장.
📊 4. 강력한 집계 기능 (Aggregation)
"aggs": {
"avg_price": {
"avg": { "field": "price" }
}
}
"avg_price": {
"avg": { "field": "price" }
}
}
통계, 평균, 그룹핑, 범위 집계 등 빠르게 처리 가능.
5. 다른 도구와 비교
📌 Elasticsearch vs RDB (MySQL, PostgreSQL)
항목 RDB Elasticsearch
| 트랜잭션 | 강함 | 약함 |
| 정합성 | ACID | Eventually Consistent |
| 검색 성능 | 약함 | 강함 |
| Full-Text | 제한적 | 매우 강력 |
| 집계 대용량 | 느림 | 빠름 |
👉 결론:
RDB는 저장,
Elasticsearch는 검색 전용으로 분리하는 것이 정석.
📌 Elasticsearch vs Redis
항목 Redis Elasticsearch
| 용도 | 캐시 | 검색 |
| 저장 구조 | Key-Value | Document 기반 |
| 검색 기능 | 제한적 | 전문 검색 |
| 대량 분석 | 불리 | 강함 |
Redis는 캐시,
Elasticsearch는 검색엔진.
📌 Elasticsearch vs OpenSearch
OpenSearch 는
Amazon이 Elasticsearch 7.10 기반으로 포크한 오픈소스.
기능은 거의 유사하며:
- AWS 친화성
- 완전 오픈소스 라이선스
차이가 있습니다.
6. Elasticsearch의 한계
실무에서 반드시 알아야 할 부분입니다.
❌ 트랜잭션에 약함
❌ 정합성 보장이 느림 (Eventually Consistent)
❌ 클러스터 운영 난이도 높음
❌ 메모리 사용량 큼
→ 운영 경험 없으면 장애 리스크 존재
7. 실무 설계 패턴
보통 이렇게 설계합니다:
RDB (정합성 보장)
↓
Kafka / 이벤트
↓
Elasticsearch (검색 전용)
↓
Kafka / 이벤트
↓
Elasticsearch (검색 전용)
CQRS 패턴으로 분리합니다.
르무엘님 정산 시스템에서도
- 주문/결제 → RDB
- 검색/통계 → Elasticsearch
이 구조가 맞습니다.
8. 언제 도입해야 하는가?
도입 기준:
- 데이터 10만 건 이상
- LIKE 검색이 느려지기 시작
- 검색 고도화 요구 (자동완성, 오타허용)
- 통합검색 필요
그 전에는 과도한 도입입니다.
🔥 정리
Elasticsearch는
“데이터 저장소가 아니라, 검색을 위한 별도의 엔진”
입니다.
- 트랜잭션은 RDB
- 캐시는 Redis
- 검색은 Elasticsearch
역할을 명확히 분리해야 합니다.
LIST
'Platform > Infra(DevOps)' 카테고리의 다른 글
| Kubernetes에서 Spring Boot 로그와 모니터링 구성 (0) | 2026.03.05 |
|---|---|
| 레거시 자바 생태계에서 Kubernetes의 의미 (0) | 2026.03.05 |
| 그라파나와 프로메테우스의 사용법 및 타 도구와 성능 분석 (0) | 2026.03.03 |
| React(Vite)가 JSP보다 Reload가 빠른 이유 (0) | 2026.02.25 |
| Claude Code + 온프레미스 서버에서 IaC 적용하는 법과 효율성 (0) | 2026.02.25 |
