상똥이의 Back-End 공부방

[Elastic Search] Elastic Search 기초 본문

카테고리 없음

[Elastic Search] Elastic Search 기초

상똥백 2024. 11. 3. 23:08

1. Elastic Search란?

- 분산형 RESTful 검색 및 분석 엔진, 확장 가능한 데이터 저장소, 벡터 데이터베이스

- 오픈소스 검색엔진

- 정형 데이터, 비정형 데이터, 위치 정보, 메트릭, 파이프 쿼리 언어 등 다양한 유형의 데이터를 검색하고 결합할 수 있도록 지원

 

- Rest API를 사용해 CRUD 작업

Relational DB Elastic Search
SELECT GET
UPDATE PUT
INSERT POST
DELETE DELETE
Relational DB Elastic Search
select * from class where id = 1; curl -XGET localhost:9200/classes/class/1
insert into class values (xxx); curl -XPOST localhost:9200/classes/class/1 -d '{xxx}'
update class set xxx where id = 1; curl -XPUT localhost:9200/classes/class/1 -d '{xxx}'
delete from class where id = 1; curl -XDELETE localhost:9200/classes/class/1

 

 

2. Elastic Search의 특징

(1) 전문 검색 

- 내용 전체를 색인해 특정 단어가 포함된 문서를 검색

- 기능별, 언어별 플러그인 적용 가능

(2) 역색인

- 일반적인 '색인'의 목적은 문서의 위치에 대한 인덱스를 만들어 빠르게 조회할 수 있도록 하는 것

- 역색인은 반대로 문서 내의 문자와 같은 내용물의 맵핑 정보를 색인해두는 것

- 즉 색인은 책의 목차, 역색인은 책 가장 뒷 페이지의 단어 별 페이지라고 할 수 있음

- 정형화되지 않은 문서도 자동으로 색인하고 검색

(3) 통계 분석

- 비정형 로그 데이터를 수집해 통계 분석에 활용할 수 있음

- kibana를 연결해 실시간으로 로그를 분석하고 시각화할 수 있음

(4) Restful API

- HTTP 기반의 Restful활용

- 요청/응답에 JSON 형식을 사용하여 운영체제나 시스템에 제한되지 않고 다양한 플랫폼에서 활용

(5) multi tenancy

- 상이한 인덱스일지라도 검색할 필드명만 같다면 여러 인덱스를 한 번에 조회 가능

(6) document oriented

- 여러 계층 구조의 문서로 저장

- 계층으로 나뉘어져 있어도 한 번의 쿼리문으로 쉽게 조회

(7) 확장성

- 분산 구성이 가능 (분산된 환경에서 데이터는 shard라는 단위로 나뉨)

(8) transaction rollback을 지원하지 않음

- 전체 클러스터의 성능 향상을 위해 비용 소모가 큰 롤백과 트랜잭션을 지원하지 않음

 

3. 기본 용어

(1) index

- 데이터 저장공간

- 하나의 물리 노드에 여러 개의 논리 인덱스 생성

- 하나의 인덱스가 여러 노드에 분산 저장됨 (M:N)

(2) shard

- 색인된 문서는 하나의 인덱스

- 인덱스 내부에 색인된 데이터는 여러 개의 파티션으로 나뉘어 구성됨

- 파티션 = 샤드

(3) type

- 인덱스의 논리적 구조

(4) document

- 데이터가 저장되는 최소 단위

- JSON포맷으로 저장

(5) field

- 문서를 구성하기 위한 속성

- 데이터베이스의 컬럽과 비교할 수 있음

- 하나의 필드는 목적에 따라 다수의 데이터 타입을 가짐

(6) mapping

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

- 스키마 정의 프로세스

Relational DB Elastic Search
Database Index
Partition Shard
Table Type
Row Document
Column Field
Schema Mapping