TIL

11_1.ElasticSearch 아키텍처 이해

꿀승 2025. 3. 6. 17:09
728x90
반응형
SMALL

학습내용

  1. ElasticSearch 개요
  2. Apache Lucene의 주요 특징
  3. ElasticSearch 아키텍처

학습정리

1. ElasticSearch 개요 및 아키텍처

  • 오픈소스 기반의 분산형 검색 및 분석 엔진입니다.
  • JSON 기반 RESTful API를 제공하여 다양한 애플리케이션과 쉽게 연동 가능합니다.
  • Apache Lucene을 기반으로 개발된 고성능 검색 엔진입니다.
    • Apache Lucene은 고성능, 확장 가능한 오픈소스 검색 라이브러리로, Java 기반으로 개발되었습니다.
    • 검색 엔진의 핵심 기능을 제공하며, 텍스트 기반의 색인(Indexing) 및 검색(Search) 기능을 수행합니다.
    • Lucene은 독립적인 검색 라이브러리이지만, ElasticSearch, Solr 같은 검색 엔진의 핵심 컴포넌트로 사용됩니다.
    • ElasticSearch는 Lucene을 기반으로 구축되었으며, Lucene의 강력한 검색 기능을 RESTful API로 제공하는 구조입니다.

2. Apache Lucene의 주요 특징

  1. 전체 텍스트 검색(Full-Text Search) 지원
    • 단순 키워드 검색뿐만 아니라, 다양한 검색 기능(예: 구 검색, 와일드카드 검색, 퍼지 검색 등)을 제공합니다.
  2. 역색인(Inverted Index) 기반
    • 문서를 색인하여 검색 속도를 극대화합니다.
    • 키워드와 문서 ID의 매핑을 효율적으로 저장하여 빠른 검색을 지원합니다.
  3. 강력한 검색 기능
    • Boolean 검색 (AND, OR, NOT)
    • 와일드카드 검색 (*, ?)
    • 퍼지(Fuzzy) 검색 (오타 보정)
    • 근접(Proximity) 검색
  4. 높은 성능 및 확장성
    • 수백만 개의 문서도 빠르게 색인하고 검색 가능
    • 병렬 색인 및 검색 지원
  5. 정렬 및 랭킹 기능
    • TF-IDF, BM25 등의 가중치를 기반으로 검색 결과를 랭킹
    • 사용자가 원하는 기준(날짜, 점수 등)으로 정렬 가능
  6. 다양한 언어 지원
    • 한국어, 영어, 중국어 등 다양한 언어의 형태소 분석과 검색 지원
    • 형태소 분석기 플러그인 활용 가능
  7. 오픈소스 및 확장 가능
    • 자바 기반 오픈소스로, 다양한 애플리케이션에 쉽게 통합 가능
    • Elasticsearch, Solr 같은 검색 엔진의 기반 기술

3. ElasticSearch 아키텍처


https://devopsideas.com/different-elasticsearch-components-and-what-they-mean-in-5-mins/

  • 용어정리

    • Cluster
    • 여러 개의 노드로 구성된 ElasticSearch의 전체 시스템
    • Node
      • 클러스터 내에서 데이터를 저장하고 검색 요청을 처리하는 개별 서버
    • Index
      • 인덱스는 문서의 모음
    • 클러스터 내부에서 노드는 다음과 같은 역할을 합니다.
      • Master Node
        • 클러스터 상태 관리 및 노드 추가/제거 수행
      • Data Node
        • 데이터 저장 및 검색, 색인 처리 담당
      • Ingest Node
        • 데이터를 전처리하여 저장하는 역할 수행
      • Coordinator Node
        • 클라이언트 요청을 받아 데이터 노드로 분배
    • Shard와 Replica
      • 샤드 → 데이터를 분할하여 저장하는 기본 단위
      • 레플리카 → 데이터 복제본을 유지하여 고가용성 제공
      • 샤드와 레플리카 개수 조절을 통해 ElasticSearch의 성능 최적화가 가능합니다.
  • 클러스터 상태

    • Green (녹색)
      • 클러스터의 모든 주 샤드(primary shards)와 복제 샤드(replica shards)가 정상적으로 할당되어 있습니다.
      • 이 상태는 클러스터가 최적의 상태에 있으며 모든 데이터가 안전하게 복제된 것을 의미합니다.
    • Yellow (노란색)
      • 모든 주 샤드는 할당되었으나 하나 이상의 복제 샤드가 할당되지 않았습니다.
      • 주 샤드는 사용 가능하지만, 일부 복제 샤드가 할당되지 않아 데이터의 내고장성이 완벽하지 않은 상태입니다.
      • 주 샤드의 노드가 실패할 경우, 해당 데이터의 복제본이 없어 데이터 손실의 가능성이 있습니다.
    • Red (적색)
      • 하나 이상의 주 샤드가 할당되지 않은 상태입니다.
      • 데이터의 일부가 사용 불가능함을 의미하며, 시스템에 문제가 있는 상태입니다.
      • 적색 상태에서는 해당 샤드의 데이터에 접근할 수 없으므로 데이터 손실이 발생할 수 있습니다.
728x90
반응형
LIST