Elasticsearch란?
📌 Elasticsearch는 오픈소스 기반의 분산형 검색 및 분석 엔진으로, 데이터를 빠르게 저장하고 검색할 수 있는 기능을 제공합니다. Elastic Stack의 중심 역할을 하며, 다양한 데이터를 실시간으로 색인하고 분석하는 데 최적화되어 있습니다.
Elastic 공식 홈페이지에서도 **Elasticsearch를 Elastic Stack의 심장(Heart of Elastic Stack)**이라고 소개하고 있으며, 이를 통해 데이터 검색, 집계, 분석 등을 수행할 수 있습니다.
Elasticsearch의 역사
- 2004년: 샤이 배논(Shay Banon)이 Compass라는 검색 엔진을 개발.
- 2010년: Compass를 발전시켜 Elasticsearch로 명명하고 오픈소스로 공개.
- 2012년: Elastic(당시 Elasticsearch) 설립.
- 2013년: Logstash, Kibana 프로젝트 인수 → ELK Stack 탄생.
- 2015년: 회사명을 Elastic으로 변경 및 Elastic Stack으로 브랜드 변경.
- 현재: 머신러닝, 보안 분석(SIEM), 클라우드 서비스, APM 등 다양한 분야로 확장.
Elasticsearch의 주요 특징
(1) 오픈소스 및 유연한 라이선스
- Elasticsearch의 핵심 기능은 Apache 2.0 라이선스로 제공되며, 누구나 자유롭게 사용할 수 있음.
- 6.3 버전 이후부터 일부 기능(X-Pack)이 Elastic 라이선스로 전환되었지만, 기본적인 검색 및 분석 기능은 여전히 오픈소스로 사용 가능.
- 소스 코드 공개: GitHub 공식 리포지토리
(2) 실시간 분석 (Real-Time Analytics)
- Elasticsearch는 Near Real-Time(NRT) 분석 엔진으로, 데이터가 입력되자마자 즉시 검색 가능.
- 기존의 배치(Batch) 분석 기반 시스템(예: Hadoop)과 달리, 실시간 데이터 처리와 검색이 가능하여 로그 분석, 보안 모니터링, IoT 데이터 분석 등에 최적화됨.
(3) 전문(Full-Text) 검색 엔진
- Apache Lucene 기반으로 동작하며, 자연어 처리(NLP)를 포함한 강력한 전문 검색(Full-Text Search) 기능 제공.
- 역파일 색인(Inverted Index) 방식으로 데이터를 저장하여 검색 속도를 최적화.
- JSON 기반 문서 저장 방식 지원 → 직관적인 데이터 구조 활용 가능.
(4) RESTful API 지원
- Elasticsearch는 완전한 RESTful API를 제공하며, HTTP 프로토콜을 사용해 데이터를 입력, 조회, 삭제할 수 있음.
- JSON 기반 요청 및 응답을 사용하여 마이크로서비스 아키텍처(MSA)와의 호환성이 뛰어남.
(5) 멀티테넌시(Multi-Tenancy) 지원
- 여러 개의 인덱스를 단일 쿼리로 검색할 수 있으며, 서로 다른 데이터 저장소를 하나의 인터페이스에서 검색 가능.
- 데이터 분리와 접근 제어를 용이하게 할 수 있어 대규모 시스템에서 유용.
Elasticsearch의 핵심 기능
(1) 분산형 아키텍처
- 데이터를 샤드(Shard) 단위로 나누어 저장하여 확장성이 뛰어남.
- 여러 개의 노드를 클러스터로 구성하여 고가용성(High Availability)과 데이터 복제 가능.
(2) 고급 검색 기능
- 전문 검색(Full-Text Search): 역파일 색인 구조를 사용하여 빠르고 정교한 검색 가능.
- 쿼리 DSL(Query DSL): JSON 기반의 강력한 검색 쿼리 작성 가능.
- 자동 완성(Auto-complete), 유사 검색(Fuzzy Search), 동의어(Synonym) 검색 등의 고급 검색 기능 제공.
(3) 데이터 집계 및 분석
- **메트릭 및 버킷 집계(Aggregations)**를 활용하여 실시간 데이터 분석 가능.
- 머신러닝(ML) 기능을 활용한 이상 탐지 및 예측 분석.
- 시계열 데이터 분석 및 대시보드(Kibana)와의 통합.
(4) 확장성 및 클라우드 지원
- 수십억 개의 문서를 저장하고도 빠른 검색 가능.
- AWS, Azure, GCP와 같은 클라우드 환경 지원.
- Hadoop, Spark 등 빅데이터 시스템과 연동 가능.
Elasticsearch의 데이터 저장 및 검색 방식
(1) 데이터 저장 구조
- JSON 문서 기반 저장 → 관계형 DB(RDB)와 달리 스키마가 필요 없음.
- 역파일 색인(Inverted Index) 구조 활용 → 검색 속도 향상.
- 샤딩(Sharding) 및 복제(Replication) 지원 → 대규모 데이터 처리 최적화.
(2) 데이터 색인(Indexing)
PUT /products/_doc/1
{
"name": "무선 키보드",
"price": 25000,
"brand": "Logitech"
}
- JSON 문서를 Elasticsearch에 저장하면 자동으로 색인(Indexing) 과정을 거쳐 검색이 가능하게 됨.
(3) 검색(Query)
GET /products/_search
{
"query": {
"match": {
"name": "키보드"
}
}
}
- match 쿼리를 사용하여 "키보드"라는 단어가 포함된 문서 검색 가능.
'Elastic Search > Elastic Stack' 카테고리의 다른 글
[Elasticsearch] Beats (1) | 2025.02.01 |
---|---|
[Elasticsearch] Kibana (0) | 2025.02.01 |
[Elasticsearch] Logstash (0) | 2025.02.01 |
[Elasticsearch] 엘라스틱 서치란? (0) | 2025.02.01 |
[Elasticsearch] 엘라스틱 서치의 특징 (0) | 2025.01.31 |