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;
}
 

3️⃣ Repository

 
public interface ProductSearchRepository
extends ElasticsearchRepository<ProductDocument, String> {

List<ProductDocument> findByNameContaining(String keyword);
}
 

4️⃣ 검색 쿼리 (DSL 예시)

 
{
"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" }
}
}
 

통계, 평균, 그룹핑, 범위 집계 등 빠르게 처리 가능.


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 (검색 전용)
 

CQRS 패턴으로 분리합니다.

르무엘님 정산 시스템에서도

  • 주문/결제 → RDB
  • 검색/통계 → Elasticsearch

이 구조가 맞습니다.


8. 언제 도입해야 하는가?

도입 기준:

  • 데이터 10만 건 이상
  • LIKE 검색이 느려지기 시작
  • 검색 고도화 요구 (자동완성, 오타허용)
  • 통합검색 필요

그 전에는 과도한 도입입니다.


🔥 정리

Elasticsearch는

“데이터 저장소가 아니라, 검색을 위한 별도의 엔진”

입니다.

  • 트랜잭션은 RDB
  • 캐시는 Redis
  • 검색은 Elasticsearch

역할을 명확히 분리해야 합니다.

LIST

+ Recent posts