[Elasticsearch] Elasticsearch
Elasticsearch
엘라스틱서치와 관계형 DB 비교
엘라스틱서치 관계형 DB 인덱스 데이터베이스 샤드 파티션 타입 테이블 문서 행 필드 열 매핑 스키마 Query DSL SQL
엘라스틱서치 장점
- 오픈소스
- 전문검색(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)
- 문서의 전처리 작업
- 인덱스 생성 전 문서의 형식을 다양하게 변경 가능
참조
- 엘라스틱서치 실무가이드, 위키북스