본문 바로가기

[Elasticsearch]

[Elasticsearch] Elasticsearch란?

반응형
이전 블로그에서 가져온 글입니다. (2020.10.2)

1. Elasticsearch란?

  • Apache Lucene 기반의 분산형 오픈소스 검색 및 분석 엔진이다.
  • 새로운 Index, Document가 반영되기 까지 거의 실시간 (NRT, near real time)으로 이루어진다. 
  • 애플리케이션 검색, 웹사이트 검색, 로깅과 로그 분석, 보안 분석, 컨테이너 모니터링 등에 사용된다.

2. 용어

2-1. 클러스터 (Cluster)

  • 노드혹은 서버의 집합체. 
  • 노드들을 클러스터에 어떻게 구성하냐에 따라 성능에 차이가 생긴다

2-2. 노드 (Node)

  • 데이터가 저장되는 일종의 서버.
  • 관리 목적 구분
    • Master node : 클러스터 관리, 인덱스 생성, 삭제 등
    • Data node    : 데이터 저장 및 데이터 관련 작업 CRUD
    • Client node  :  마스터/데이터 노드에 맞게 클러스터 요청을 라우팅해주는 역할
    • Ingest node  : 인덱싱하기 전에 document 전처리 작업.
  • 하나의 노드에서 위에 제시한 4개의 역할을 수행할 수 있지만 비효율적이라 운영환경에서는 다수의 노드를 클러스터링해서 적절한 역할을 부여해주는 것이 좋다.

2-3. 인덱스 (Index)

  • 데이터 집합소. == RDBMS의 테이블과 같은 개념
  • 기존에는 인덱스 안에 타입(Type)을 통해 document들을 분류 할 수 있었으나 현재는 인덱스당 한개의 타입만 가질 수 있다.

2-4. 도큐먼트 (Document)

  • 인덱스에 저장되는 하나의 json object
  • 도큐먼트는 여러 필드 (field)로 구성되어있다.
    • Dynamic Mapping : field에 데이터 타입 (string, int등) 을 정의하지 않아도 데이터에 맞춰서 데이터 타입을 지정해준다.

2-5. 샤드 (Shard)

  • 데이터를 인덱스에 저장하는데 있어, 이를 한곳에 저장하지 않고 물리적으로 여러 조각으로 나누어 저장한다. 
  • 인덱스를 생성하는 과정에서 몇개의 샤드로 할 지 정할 수 있으며, 디폴트로 5개다. 

2-5. 레플리카 (Replica)

  • 샤드는 인덱스의 확장성(Scalability)를 담당한다면, 레플리카는 고가용성(High Availability)를 담당한다.
  • 데이터 원본을 저장하는 곳을 프라이머리 샤드(Primary Shard)라고 하는데 요놈의 복제본이 레플리카다. 
    • 프라이머리와 레플리카는 물리적으로 다른 곳에 저장되며, 샤드 혹은 노드에 문제가 발생되면 다른 노드에 있는 레플리카를 사용하게 된다.

3. 정리

4. 참고

 

Elasticsearch는 무엇인가요?

로그, 시스템 메트릭, 웹 애플리케이션 등 다양한 소스로부터 원시 데이터가 Elasticsearch로 흘러들어갑니다. 데이터 수집은 원시 데이터가 Elasticsearch에서 색인되기 전에 구문 분석, 정규화, 강화

www.elastic.co

 

Elasticsearch Tutorial: Creating an Elasticsearch cluster | Logz.io

This tutorial provides information on how to set up an Elasticsearch cluster, and will add some operational tips and best practices to help you get started.

logz.io

728x90