[Elasticsearch] Elasticsearch

Elasticsearch

  • 엘라스틱서치와 관계형 DB 비교

    엘라스틱서치관계형 DB
    인덱스데이터베이스
    샤드파티션
    타입테이블
    문서
    필드
    매핑스키마
    Query DSLSQL

엘라스틱서치 장점

  • 오픈소스
  • 전문검색(Full Text)
    • 내용 전체를 색인해서 특정 단어가 포함된 문서를 검색하는 것
  • 통계 분석
    • 비정형 로그 데이터 수집 및 통계 분석
  • 스키마리스
  • RESTful API
  • 멀티테넌시
  • Document-Oriented
  • 역색인

엘라스틱서치 단점

  • 준 실시간
  • 트랜잭션/롤백 X
  • 데이터 업데이트 X

엘라스틱서치 개요

1. 인덱스

  • 하나의 인덱스는 하나의 타입만 가짐
  • 하나의 물리적인 노드에 여러 개의 논리적인 인덱스 생성 가능
  • 5개의 프라이머리 샤드 & 1개의 레플리카 샤드
  • 인덱스 명은 소문자

2. 샤드

  • 인덱스 내부에 색인된 데이터는 물리적인 공간에 여러 개의 샤드로 구성됨.

3. 타입

  • 인덱스의 논리적 구조
  • 6.0 버전 이하 : 하나의 인덱스에 여러 타입 가능
  • 6.1 부터 : 인덱스당 하나의 타입

4. 문서

  • 데이터가 저장되는 최소 단위
  • default가 JSON 포맷
  • 하나의 문서는 다수의 필드로 구성
  • 중첩 구조 : 문서 안에 문서 가능

5. 필드

  • 문서를 구하기 위한 속성
  • 다수의 데이터 타입 가질 수 있음

6. 매핑

  • 문서의 필드와 필드의 속성을 정의하고 그에 따른 색인 방법을 정의하는 프로세스

노드 종류

  • 클러스터
    • 물리적인 노드 인스턴스들의 모임
    • 모든 노드의 검색과 색인 작업을 관장하는 논리적인 개념

1. 마스터(Master)

  • 클러스터 관리
  • 노드 추가와 제거 같은 클러스터의 전반적인 관리

2. 데이터(Data)

  • 실질적인 데이터를 저장
  • 검색과 통계 같은 데이터 관련 작업 수행

3. 코디네이팅(Coordinating)

  • 사용자의 요청만 받아서 처리. 들어온 요청을 단순히 라운드로빈 방식으로 분산시켜 주는 노드
  • 클러스터 관련 요청은 마스터 노드에 전달하고 데이터 관련 요청은 데이터 노드에 전달

4. 인제스트(Ingest)

  • 문서의 전처리 작업
  • 인덱스 생성 전 문서의 형식을 다양하게 변경 가능

참조

  • 엘라스틱서치 실무가이드, 위키북스