대량의 데이터를 빠르게 검색하고 분석할 수 있는 분산 검색 엔진이다. Apache Lucene(무료 오픈 소스 검색 엔진 라이브러리) 라이브러리를 기반으로 하는 오픈 소스 검색 및 분석 엔진
2010년에 출시하여 JSON 문서에 전체 텍스트 검색 기능을 제공하기 위한 분산형 Java 솔루션으로 설계되었다.
다양한 소스에서 비정형 데이터 유형을 가져와 최적화된 언어 기반 검색을 위한 특수 형식으로 저장함으로써 확장성이 매우 뛰어난 검색 기능을 제공한다.
기본적으로 JSON 문서를 저장하고, 인덱싱하여 검색하는 방식
JSON 문서 형식의 데이터를 Logstash 및 Amazon Kinesis Data Firehose와 같은 수집 도구나 API를 사용해 Elasticsearch로 전송할 수 있다.
Elasticsearch API를 사용해 문서를 검색하고 조회할 수 있다.
Kibana를 통해 데이터를 시각화하고 대화식 대시보드를 구축할 수 있다.
신속한 가치 실현: 간단한 REST API 기반, 간단한 HTTP 인터페이스를 제공하고 스키마 없는 JSON 문서를 사용해 다양한 사용 사례에서 쉽게 시작하고 빠르게 애플리케이션을 구축할 수 있다.
고성능: 분산 성질로 인해 대량의 볼륨의 데이터를 병렬로 처리할 수 있어 쿼리에 최고의 일치 항목을 빠르게 찾을 수 있다.
무료 도구 및 플러그인: Kibana가 통합되어 제공된다. Beats 및 Logstash와의 통합도 제공한다. 언어 분석기 및 제안자 등 다양한 오픈 소스 Elasticsearch 플러그인을 사용하여 애플리케이션에 풍부한 기능을 추가할 수 있다.
실시간에 가까운 운영: 데이터 읽기 및 쓰기와 같은 운영은 보통 1초도 안 걸린다. 덕분에 모니터링 및 이상 탐지와 같은 실시간에 가까운 사용 사례에 사용될 수도 있다.
다양한 언어 지원: Java, Python, PHP, JS, Ruby 등 지원된다.
풀텍스트 검색: 띄어쓰기, 형태소 분석(토큰화), 동의어 매칭 등이 가능함
다국어 지원 가능:
로그 분석(ELK 스택에서 사용됨)
자동완성 & 연관 검색어 기능
대용량 데이터 검색 최적화
데이터 시각화 활용
| Elasticsearch | RDBMS (MySQL, PostgreSQL 등) | |
|---|---|---|
| 데이터 저장 방식 | JSON 문서(Document) 기반 | 테이블(Row & Column) 기반 |
| 검색 속도 | 빠름 (역색인 사용) | 느림 (LIKE 검색 시 성능 저하) |
| 검색 기능 | 형태소 분석, 동의어 처리, 자동완성 지원 | 기본 LIKE 검색, 정규식 검색 |
| JOIN 기능 | 지원 안 함 (Nested Document 활용) | JOIN 지원 |
| 트랜잭션(ACID) | 일부만 지원 (정합성이 중요하면 보완 필요) | 강력한 트랜잭션 보장 |
| 확장성 | 수평 확장 (Sharding & Clustering) | 주로 수직 확장 (Scale-up) |
| 사용 목적 | 대량의 데이터 검색 & 분석 | 트랜잭션 기반 CRUD 처리 |
| 운영 난이도 | 클러스터 관리 필요 (복잡) | 상대적으로 쉬움 |
| 데이터 실시간 반영 | Near Real-time (완전한 실시간 X) | 즉시 반영 가능 |
| 대표 사용 사례 | 🔹 검색 엔진 (네이버, 구글) 🔹 로그 분석 (ELK Stack) 🔹 추천 검색어 & 자동완성 | 🔹 은행 시스템 🔹 쇼핑몰 결제 시스템 🔹 CRUD 기반 서비스 |