Elasticsearch 란?
- 엘라스틱서치는 Apache Lucene 기반의 오픈소스 분산 검색 및 분석 엔진입니다.
- 방대한 데이터를 빠르고 거의 실시간으로 저장하고 검색하고, 효과적으로 분석, 시각화할 수 있습니다.
- 엘라스틱서치는 데이터베이스가 아니라 문서 기반 데이터를 저장하고 이를 기반으로 아주 빠르게 검색할 수 있도록 설계된 시스템입니다.
- 기존 관계형 데이터베이스(RDB)가 복잡한 쿼리로 인해 검색 속도가 느려지는 문제를 해결하기 위해 전문 검색 기능이 특화되어 있습니다.
- 데이터베이스는 구조적 데이터 저장 / 관계 연산에 강하지만, 엘라스틱서치는 비정형 데이터 저장 / 검색과 분석에 강한 특징이 있습니다.
Elasticsearch 특징
1. 분산 검색 엔진

- 엘라스틱서치는 분산형 시스템(구조)로 설계되어 있습니다.
- 여러 서버(노드)에 데이터를 분산해 저장하거나 검색하여, 확장성과 고가용성을 제공합니다.
- 데이터를 여러 서버에 분산하여 저장하고 처리하기 때문에, 단일 서버의 한계를 뛰어넘어 대규모 데이터를 처리할 수 있고, 장애가 발생해도 시스템이 멈추지 않았기 때문에 안정적인 서비스를 제공할 수 있습니다.
2. 역색인 구조
- SQL과 달리 색인된 데이터에서 효율적으로 문서를 찾을 수 있는 방식(inverted index)으로 동작합니다.
- 일반적인 데이터베이스는 문서(document)를 기준으로 단어를 찾아야 해서 느리지만, 역색인은 단어를 기준으로 그 단어가 포함된 문서를 검색합니다.
- 이러한 검색 방법을 통해 엘라스틱서치의 검색 속도가 매우 빠를 수 있습니다.
- 예시) "자바 스프링부트" 라는 문서가 있으면 역색인은 다음과 같이 구성됩니다.
- "자바" : [문서1, 문서2]
- "스프링부트" " [문서1, 문서3]
- 이렇게 미리 단어별로 문서를 매핑해두면, "자바"를 검색할 때 전체 문서를 훑어보지 않고, 바로 해당 문서 목록을 찾아내기 때문에 검색 속도가 매우 빨라집니다.
3. RESTful API 제공
- 데이터를 저장(CREATE), 검색(READ), 수정(UPDATE), 삭제(DELETE) 등의 작업을 HTTP 기반의 API로 할 수 있습니다.
4. 모든 데이터 지원
- 정형 및 비정형 데이터(텍스트, 숫자, 위치 등)를 인덱싱하고 분석할 수 있습니다.
5. 실시간성
- Near Real Time으로 데이터를 거의 즉시 검색·분석할 수 있습니다.
6. ELK 스택의 핵심
- Logstash(수집), Elasticsearch(검색/분석), Kibana(시각화)로 이루어진 ELK 스택에서 주로 사용됩니다.
Elasticsearch 핵심 개념
Index (인덱스) : 관계형 DB의 Database랑 비슷. 데이터를 모아두는 공간.
Document (문서) : DB의 Row에 해당. JSON 형태로 저장됨.
Field (필드) : DB의 Column처럼 각 문서의 속성.
예시) 뉴스 기사 데이터
{
"title": "스프링부트에 엘라스틱서치 도입",
"author": "홍길동",
"content": "오늘부터 우리 프로젝트에 엘라스틱서치를 적용한다.",
"published_date": "2025-09-02"
}
- 이 JSON 하나가 Document
- 여러 개가 모이면 하나의 Index (예: "news")
RDBMS와 Elasticsearch의 차이점
| 구분 | 관계형 데이터베이스(DB, MySQL/PostgreSQL 등) | Elasticsearch |
|---|
| 데이터 구조 | 테이블(Table), 행(Row), 열(Column) | 인덱스(Index), 문서(Document), 필드(Field) |
| 데이터 형식 | 정형 데이터(숫자, 문자열, 날짜 등) | JSON 기반 문서 (정형 + 반정형 + 텍스트) |
| 저장 목적 | 데이터의 무결성, 트랜잭션 관리, 관계형 모델 | 검색 속도, 텍스트 분석, 실시간 분석 |
| 쿼리 언어 | SQL | DSL(Query DSL, JSON 기반 쿼리) |
| 검색 기능 | 정확한 값 조회, 범위 검색, JOIN | 풀텍스트 검색, 유사도 검색, 점수 기반 랭킹 |
| 성능 특화 | 다중 트랜잭션 처리, 정합성 보장 | 대규모 데이터의 빠른 검색과 분석 |
| 트랜잭션(ACID) | 지원 (강력한 일관성) | 제한적 (최종적 일관성, 분산 처리 중심) |
| 확장성 | 수직 확장(서버 스펙 업그레이드 중심) | 수평 확장(노드 추가로 클러스터 확장) |
| 활용 예시 | 주문/결제 시스템, 고객 관리, 금융 거래 | 상품 검색, 로그 수집·분석, 추천 시스템 |
데이터 저장 구조
- RDBMS는 테이블, 열(컬럼), 행(로우), 스키마에 기반해서 데이터를 정형화하여 저장합니다.
- 엘라스틱서치는 JSON 문서 형태로 데이터를 저장하며, 필드와 구조가 자유롭고, 스키마가 유연합니다.
검색 방식
- RDBMS는 SQL 쿼리와 전통적인 B-Tree, 해시 인덱스 등을 사용하여 컬럼 값 기반 조회에 최적화되어 있습니다.
- 엘라스틱서치는 역색인(inverted index) 구조 및 텍스트 분석 기반의 검색을 기본으로 하여, 대규모 텍스트 및 비정형 데이터의 빠른 '키워드', 'Full-text' 검색에 매우 강점을 가집니다.
확장성과 처리 성능
- RDBMS는 수직 확장(CPU, 메모리 업그레이드)에 기반하며, 분산과 대용량 처리에 한계가 있을 수 있습니다.
- 엘라스틱서치는 분산형 아키텍처이므로, 수평 확장(노드 추가)을 통해 대용량 데이터를 빠르고 효율적으로 관리할 수 있습니다.
트랜잭션 및 데이터 일관성
- RDBMS는 ACID(Atomicity, Consistency, Isolation, Durability) 성질을 갖추고 있어 트랜잭션과 데이터 무결성, 복잡한 조인과 관리에 강합니다.
- 엘라스틱서치는 트랜잭션 처리, 롤백, 일관성이 약하거나 제공되지 않으며, 검색과 집계에 특화되어 있습니다.
활용 및 목적
- RDBMS: 비즈니스·업무 시스템에서 정형 데이터 관리와 복잡한 관계 처리, 데이터의 정확성과 안정성이 반드시 필요한 경우 사용합니다.
- 엘라스틱서치: 로그, 텍스트, 다양한 형태의 비정형 데이터에 대해 빠른 검색·집계·분석이 필요할 때 적합합니다.
DB vs Elasticsearch 예시
DB 검색
SELECT * FROM news WHERE content LIKE '%엘라스틱 서치%';
- 단순한 LIKE 매칭만 가능
- 테이블 전체를 스캔해야 하므로 시간이 오래 걸림
엘라스틱서치 검색
{
"query": {
"match": {
"content": "엘라스틱"
}
}
}
- 미리 생성된 역색인에서 "엘라스틱"과 "서치"라는 단어가 포함된 모든 문서 검색 가능
- 형태소 분석, 유사어 검색, 점수(관련도)순 정렬까지 가능
- 오타 보정 및 유사어 제안 기능도 쉽게 구현 가능
Elasticsearch의 활용
위와 같은 특장점을 가지고 있기에 엘라스틱서치는 검색 성능과 확장성, 실시간 분석 기능 때문에 많이 사용되고 있습니다.
- 검색 기능: 쇼핑몰 상품 검색, 블로그/뉴스 검색
- 로그/모니터링: 서버 로그, 사용자 이벤트 데이터 (보통 ELK Stack: Elasticsearch + Logstash + Kibana)
- 실시간 분석: 유저 행동 데이터, 클릭/조회수 통계
- 쇼핑몰 검색 기능: 고객이 상품 이름이나 설명을 자유롭게 검색 가능
- 로그 분석: 서버 로그 데이터를 실시간으로 수집·검색
- 위치 기반 서비스: 지도/위치 데이터에 대한 검색 및 분석
- 대규모 데이터 분석: 수백만 건의 데이터에 대한 빠른 탐색과 집계.
내용 심화 참고
https://velog.io/@big9810/%EC%97%98%EB%9D%BC%EC%8A%A4%ED%8B%B1%EC%84%9C%EC%B9%98