개발/데이터베이스

엘라스틱서치(Elasticsearch)에 대해 알아보자

플랜B 2022. 1. 12. 15:21

Elasticsearch란?

Java기반 오픈소스 분산 검색엔진이다.
준 실시간으로 데이터를 저장, 조회, 분석이 가능하다.


Elasticsearch와 RDB 비교

Elasticsearch도 데이터를 저장하는 시스템이기 때문에, RDB와 구조는 비슷하다.

Elasticsearch와 RDB의 구조

 

차이점은 RDB의 스키마 개념이 Elasticsearch에서는 가변적이다는 것과 데이터 저장과 동시에 역색인을 한다는 것이다.

스키마가 가변적이다?

아래 예시와 같이 새로운 필드가 추가되어도 저장이 된다.

{
  "name":"해라프",
  "age":23
}
{
  "name":"플랜B",
  "age":21,
  "nationality":"대한민국"
}
저장과 동시에 역색인을 한다?

역색인이란 keyword를 지정하고, 그 keyword를 기반으로 document(문서)를 찾는 것을 말한다.

 

Elasticsaerch에서 template을 생성할 때 Field별로 keyword를 지정할 수 있으며, 위의 그림에서 볼 수 있듯이 RDB의 Row를 Elasticsearch에서는 Document라고 한다.

 

그렇다면 왜 Elasticsearch를 사용하는가?

  1. Scale out이 쉽다.
  2. Restful API를 통해 CURD를 수행한다.
  3. 역색인을 하기 때문에 조회(검색)이 빠르다.

물론, 다 좋은 것은 아닌 것이, Scale out이 쉬워서 대용량 처리를 쉽게 할 수 있지만, 데이터의 일관성을 RDBMS처럼 보장할 수가 없다. (NoSQL의 특징이긴 하다.)

반응형