본문으로 바로가기

ElasticSearch

category ETC 2021. 7. 20. 21:02
728x90

1. ElasticSearch 란?

오픈소스 분산 검색 엔진이다.

방대한 양의 데이터를 빠르게 저장, 검색, 분석 가능하여 다음과 같은 사례에 많이 사용된다

  • 애플리케이션 검색
  • 웹사이트 검색
  • 엔터프라이즈 검색
  • 로깅과 로그 분석
  • 인프라 메트릭과 컨테이너 모니터링
  • 애플리케이션 성능 모니터

2. ElasticSearch 사용 이유

1. 빠르다.

2. 분산적이다. (하드웨어 장애 시 데이터 사본 제공 가능)

3. 데이터를 효율적으로 저장하고 검색할 수 있는 기능이 존재한다.

3. ElasticSearch 의 인덱스란?

서로 연관되어있는 문서들의 모음으로 JSON 형태로 저장한다. (key-value 조합으로 되어있음)

Elasticsearch는 역 인덱스(inverted index)라는 데이터 구조를 사용한다.

인덱스 api를 사용해 인덱싱이 시작되며 이를 이용해서 json문서를 업데이트 할 수 있다. 

(RDBMS는 SQL문을 사용하지만 elasticsearch는 api로 호출하는 방식(GET,PUT,POST,DELETE))

 

4. 역 인덱스(inverted index)란?

인덱싱 된 단어를 바탕으로 원하는 내용들은 찾는다.

* 역 인덱스 구조

1. 내용을 토대로 index word를 추출

문서 번호 문서 내용 index word
text1 test index error test, index, error
text2 elasticsearch web infra index elasticserach, web, infra, index
text3 index infra api index, infra, elasticsearch

2. index word의 갯수를 카운팅 하고 문서 번호와 연결

index word 갯수 문서 번호
index 3 test1, test2, test3
infra 2 test2, test3
elasticsearch 2 test2, test3
web 1 test2
error 1 test1
test 1 test1

이 구조가 되면 elasticsearch에 대한 내용을 검색하고자 할 때 어떤 문서를 찾으면 되는지 빠르게 알 수 있다.

 

4. ElasticSearch의 이해

ElasticSearch를 이해하기 위해서는 익숙한 RDBMS와 비교해 보는것이 좋다.

RDBMS ElasticSearch
Database index
Table Type
Row Document
Column Field
Primary key _id
Schema Mapping
Physical parition Shard
Logical partition Route
Relational Parent/child
SQL Query DSL