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

+ Recent posts