Elasticsearch

Elasticsearch 주요 개념 요약

Namiz_IT 2024. 8. 27. 13:46
반응형

 

Elasticsearch 주요 개념 요약

Elasticsearch는 데이터를 저장, 검색, 분석하는 분산형 검색 및 분석 엔진이다. Elasticsearch의 주요 구성 요소는 다양한 기능을 지원하고, 이를 통해 사용자는 데이터를 효율적으로 처리할 수 있다. 아래는 Elasticsearch의 주요 구성 요소와 각 구성 요소에 대한 설명이다.

1. 클러스터(Cluster)

  • 정의 : 클러스터는 하나 이상의 노드(node)로 구성된 Elasticsearch의 기본 작업 단위이다. 클러스터는 데이터를 저장하고, 데이터를 색인화 및 검색하는 작업을 수행한다.
  • 클러스터 이름: 클러스터는 고유한 이름을 가진다. 클러스터에 속한 모든 노드는 같은 클러스터 이름을 사용해야 한다.
  • 특징 : 클러스터는 노드를 추가하거나 제거함으로써 수평적으로 확장할 수 있으며, 고가용성과 내결함성을 제공한다.

2. 노드(Node)

  • 정의: 노드는 클러스터의 일부로, 데이터 저장과 검색, 분석 작업을 수행하는 물리적 또는 가상 머신이다.
  • 유형:
    • 마스터 노드(Master Node): 클러스터의 상태와 메타데이터를 관리하며, 클러스터 관리 작업(예: 샤드 할당, 인덱스 생성 등)을 수행한다.
    • 데이터 노드(Data Node): 실제 데이터를 저장하고 CRUD(생성, 읽기, 업데이트, 삭제) 작업과 검색 쿼리를 처리한다.
    • 코디네이팅 노드(Coordinating Node): 쿼리를 수신하고, 여러 데이터 노드로부터 결과를 집계하는 역할을 합니다. 일반적인 데이터 노드와 다르게 데이터를 저장하지 않는다.
    • 인제스트 노드(Ingest Node): 데이터가 인덱스되기 전에 변환 및 처리 파이프라인을 실행하는 노드이다.
    • 머신 러닝 노드(Machine Learning Node): 데이터의 이상 감지와 같은 머신 러닝 기능을 수행하는 노드이다.

3. 인덱스(Index)

  • 정의: 인덱스는 Elasticsearch에서 데이터를 저장하는 논리적 구조입니다. 인덱스는 여러 문서(document)를 포함하며, 데이터베이스의 테이블과 유사하다.
  • 구성 요소:
    • 샤드(Shard): 인덱스는 여러 샤드로 분할되어 저장되며, 각 샤드는 데이터의 물리적 세그먼트이다. 샤드는 Elasticsearch의 분산 특성을 활용하여 데이터를 여러 노드에 분산 저장한다.
    • 복제본(Replica): 샤드의 복사본으로, 고가용성과 데이터 복구를 위해 사용된다.

4. 문서(Document)

  • 정의: 문서는 인덱스 내의 데이터 저장 단위로, JSON 형식으로 표현됩니다. 문서는 데이터베이스의 행(row)과 유사하다.
  • 구성: 각 문서는 하나 이상의 필드(field)를 가지며, 각 필드는 특정한 데이터 유형을 갖는다(예: 문자열, 숫자, 날짜 등).

5. 매핑(Mapping)

  • 정의: 매핑은 인덱스 내에 저장되는 문서의 구조를 정의한다. 매핑은 필드의 데이터 유형과 데이터가 어떻게 색인화될지를 설명하는 스키마이다.
  • 특징:
    • 정적 매핑(Static Mapping): 필드와 필드 유형을 명시적으로 정의한다.
    • 동적 매핑(Dynamic Mapping): 미리 정의되지 않은 필드를 자동으로 추가하고 적절한 유형을 할당한다.

6. 샤드(Shard)와 복제본(Replica)

  • 샤드(Shard):
    • 정의: 샤드는 인덱스를 구성하는 기본 데이터 단위로, 물리적 세그먼트이다. 샤드는 데이터를 분할하여 저장함으로써 분산 및 병렬 처리 성능을 제공한다.
    • 기능: 각 샤드는 독립적으로 색인화, 검색 및 집계 작업을 수행할 수 있다.
  • 복제본(Replica):
    • 정의: 복제본은 샤드의 복사본으로, 데이터의 중복 저장을 통해 고가용성과 내결함성을 제공한다.
    • 기능: 복제본 샤드는 기본(primary) 샤드가 실패할 경우, 데이터의 지속성과 검색 기능을 유지한다.

7. 쿼리 DSL(Query DSL)

  • 정의: Query DSL은 Elasticsearch에서 데이터를 검색하고 분석하기 위해 사용하는 도메인 특화 언어이다.
  • 구성 요소:
    • 매칭 쿼리(Match Query): 특정 필드에 대한 텍스트 검색을 수행한다.
    • 부울 쿼리(Bool Query): 여러 조건을 조합하여 복합 검색을 수행한다.
    • 범위 쿼리(Range Query): 숫자, 날짜 또는 문자열 범위를 기준으로 검색한다.

8. 집계(Aggregations)

  • 정의: 집계는 데이터를 분석하고 요약 통계를 계산하는 강력한 도구입니다. 집계는 데이터의 메트릭 및 분포를 계산하는 데 사용된다.
  • 유형:
    • 메트릭 집계(Metric Aggregations): 수학적 계산(예: 합계, 평균, 최대값, 최소값)을 수행한다.
    • 버킷 집계(Bucket Aggregations): 데이터를 그룹화한다(예: 날짜 히스토그램, 범위 기반 그룹화).

9. 분석기(Analyzer)

  • 정의: 분석기는 텍스트를 인덱싱하거나 검색할 때 텍스트를 처리하는 방법을 정의합니다. 분석기는 토크나이저(tokenizer)와 토큰 필터(token filter)의 조합으로 구성됩니다.
  • 기능:
    • 토크나이저(Tokenizers): 텍스트를 단어 또는 문장과 같은 더 작은 단위로 분리한다.
    • 토큰 필터(Token Filters): 토큰을 수정하거나 필터링한다(예: 소문자 변환, 불용어 제거 등).

10. 스냅샷 및 복구(Snapshot and Restore)

  • 정의: 스냅샷은 인덱스 또는 클러스터 상태의 백업을 생성하는 기능이다. 복구는 이 스냅샷을 사용하여 데이터를 복구하는 과정이다.
  • 기능: 데이터 손실을 방지하고, 클러스터를 이전 상태로 복구할 수 있다.

11. 파이프라인(Pipeline)

  • 정의: 파이프라인은 데이터가 인덱스되기 전에 변환하고 처리하는 단계적 절차이다.
  • 구성 요소:
    • 프로세서(Processor): 데이터를 조작하는 개별 단계로, 예를 들어 데이터의 특정 필드를 수정하거나 추가할 수 있다.

12. 보안(Security)

  • 정의: 보안은 Elasticsearch 클러스터와 데이터에 대한 접근을 제어하는 기능을 제공한다.
  • 기능:
    • 사용자 인증(Authentication): 클러스터에 접근할 수 있는 사용자를 확인한다.
    • 권한 부여(Authorization): 사용자가 수행할 수 있는 작업을 제한한다.
    • 암호화(Encryption): 네트워크 트래픽과 저장된 데이터를 암호화하여 보안을 강화한다.

요약

Elasticsearch는 고성능 검색 및 데이터 분석을 위해 여러 구성 요소가 유기적으로 결합된 시스템이다. 각 구성 요소는 데이터를 저장하고 처리하며, 클러스터의 내결함성과 확장성을 보장한다. 이러한 구성 요소들의 조합은 Elasticsearch를 강력하고 유연한 데이터 처리 플랫폼으로 만든다.


참조

https://www.elastic.co/guide/en/elasticsearch/reference/current/elasticsearch-intro.html

 

What is Elasticsearch? | Elasticsearch Guide [8.15] | Elastic

What is Elasticsearch?edit You know, for search (and analysis) Elasticsearch is the distributed search and analytics engine at the heart of the Elastic Stack. Logstash and Beats facilitate collecting, aggregating, and enriching your data and storing it in

www.elastic.co

 

반응형

'Elasticsearch' 카테고리의 다른 글

Elasticsearch - 검색(Search) #2  (0) 2024.09.04
Elasticsearch - 검색(Search) #1  (0) 2024.09.03
Elasticsearch - 매핑(Mapping)  (0) 2024.09.03
Kibana란 무엇인가?  (0) 2024.08.27
Elasticsearch란 무엇인가?  (0) 2024.08.27