Microservices Architecture / / 2024. 12. 10. 10:36

엘라스틱서치(Elasticsearch)

엘라스틱서치(Elasticsearch)오픈소스 기반의 분산형 검색 및 분석 엔진입니다.
데이터의 빠른 검색, 저장, 분석을 지원하며, JSON 형식의 RESTful API를 통해 데이터를 처리합니다.

주로 로그 분석, 실시간 검색, 데이터 모니터링 등에서 많이 사용되며, Elastic Stack(ELK)의 핵심 구성 요소입니다.


📌 엘라스틱서치 개요

  1. 분산 검색 엔진: 대용량 데이터를 분산 저장하고 빠르게 검색합니다.
  2. RESTful API 기반: HTTP를 통해 요청 및 응답이 JSON 형식으로 이루어집니다.
  3. NoSQL 데이터베이스: 스키마리스(schema-less) 구조로 문서 기반 저장소입니다.
  4. 실시간 데이터 분석: 대량의 데이터를 빠르게 인덱싱하고 분석합니다.

🔎 주요 특징

1️⃣ 분산형 구조

  • 엘라스틱서치는 데이터를 노드(Node)클러스터(Cluster) 구조로 관리합니다.
  • 데이터가 분산 저장되므로 확장성고가용성이 뛰어납니다.

구성 요소:

  • 노드(Node): 엘라스틱서치 실행 단위로 데이터를 저장하고 검색합니다.
  • 클러스터(Cluster): 여러 노드가 모여 하나의 클러스터를 형성합니다.
  • 샤드(Shard): 인덱스 내 데이터를 작은 단위로 분할하여 저장합니다.
  • 레플리카(Replica): 샤드의 복제본으로, 장애 대비 및 읽기 성능 향상에 사용됩니다.

2️⃣ JSON 기반 RESTful API

모든 요청과 응답은 JSON 형식으로 이루어집니다.

예시: 문서 인덱싱

POST /my-index/_doc/1
{
  "name": "John Doe",
  "age": 30,
  "city": "Seoul"
}

응답:

{
  "_index": "my-index",
  "_type": "_doc",
  "_id": "1",
  "_version": 1,
  "result": "created"
}

3️⃣ 인덱스(Index)

  • 데이터가 저장되는 기본 단위입니다.
  • 엘라스틱서치에서는 데이터를 문서(Document) 단위로 저장하고 인덱스에 색인화합니다.

인덱스 생성 예시:

PUT /my-index

4️⃣ 강력한 검색 기능

  • 전체 텍스트 검색(Full-text Search)
  • 필터링 및 정렬
  • 복잡한 쿼리(Query DSL): 조건을 조합한 다양한 검색 쿼리를 작성할 수 있습니다.

예시: 검색

GET /my-index/_search
{
  "query": {
    "match": {
      "name": "John"
    }
  }
}

5️⃣ 실시간 분석 및 집계(Aggregation)

  • 데이터를 그룹화하거나 통계 분석을 수행하는 기능을 제공합니다.
  • 집계는 데이터의 평균, 합계, 그룹별 통계를 구할 수 있습니다.

예시: 집계(Aggregation)

GET /my-index/_search
{
  "size": 0,
  "aggs": {
    "average_age": {
      "avg": {
        "field": "age"
      }
    }
  }
}

응답:

{
  "aggregations": {
    "average_age": {
      "value": 30.0
    }
  }
}

6️⃣ 확장성과 고가용성

  • 샤드와 레플리카를 통해 데이터를 수평적으로 확장하고 장애 복구를 지원합니다.
  • 노드를 추가하면 클러스터가 자동으로 확장됩니다.

🛠️ 엘라스틱서치의 주요 활용 사례

1. 실시간 로그 분석

  • Elastic Stack(ELK)Logstash를 통해 로그를 수집하고 Kibana로 시각화합니다.
  • 실시간으로 로그를 검색 및 분석할 수 있습니다.

2. 검색 엔진

  • 웹사이트, 애플리케이션 내 빠른 검색 기능 구현
  • 자동 완성, 추천 검색어 기능 지원

3. 데이터 모니터링

  • 시스템, 애플리케이션의 성능 모니터링
  • 대시보드(예: Kibana)를 통해 시각화

4. 비즈니스 인텔리전스(BI)

  • 데이터 분석 및 통계를 기반으로 의사결정에 활용

5. 보안 분석

  • 보안 로그 수집 및 이상 징후 탐지

🚀 엘라스틱서치의 생태계: ELK Stack

  1. Elasticsearch

    • 데이터를 저장, 검색, 분석하는 핵심 엔진
  2. Logstash

    • 데이터 수집 및 변환을 담당하는 파이프라인 도구
  3. Kibana

    • Elasticsearch 데이터를 시각화하는 대시보드 도구
  4. Beats

    • 경량 데이터 수집기(파일 로그, 메트릭 등)

⚙️ 설치 및 실행

1. 다운로드 및 설치

2. 실행

./bin/elasticsearch

3. 확인

브라우저에서 http://localhost:9200로 접속합니다.
정상적으로 실행되면 JSON 형태의 응답이 표시됩니다.


🎯 정리

Elasticsearch실시간 검색과 분석을 지원하는 분산형 엔진으로,
대용량 데이터를 빠르게 처리하고 확장성과 고가용성을 제공합니다.

핵심 기능

  1. 강력한 검색: 전체 텍스트 검색과 필터링
  2. 데이터 분석: 집계(Aggregation) 기능 제공
  3. 분산 구조: 확장성과 고가용성 보장
  4. ELK 스택 통합: Logstash, Kibana와 함께 강력한 시각화와 분석 지원

활용 사례로는 로그 분석, 검색 엔진, 시스템 모니터링 등이 있습니다.

'Microservices Architecture' 카테고리의 다른 글

Circuit Breaker(서킷 브레이커)  (1) 2024.12.13
폴백(Fallback)  (0) 2024.12.13
12 팩터 앱(12 Factor App)  (0) 2024.12.10
스프링 클라우드 패턴  (0) 2024.12.10
Resilience4j  (2) 2024.12.09
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유