Elasticsearch 기본개념 정리 (3) : 매핑(Mapping)이란?

 ES에서 mapping이란 RDBMS에서의 스키마와 비슷한 개념으로 볼 수 있는데

즉 문서의 구조를 나태내는 정보이다.

 

ES는 스키마리스(schemaless)라는 특징이 있어서 스키마가 없어도 된다고 오해할 수 있는데 

스키마가 없어도 되는 것이아니라 미리 정의하지 않아도 되는 즉 동적으로 스키마를 구성할 수 있다는 장점이 있는 것이다.

 

그래서 매핑의 종류는 2가지가 존재한다.

 

1. 동적 매핑 : 처음 색인되는 문서를 바탕으로 매핑 정보를 Elasticsearch가 자동으로 생성해줌

2. 정적 매핑 : 개발자나 엔지니어가 문서의 매핑 정보를 미리 정의해놓고 사용

 

 

Mapping 정보가 생성된 후 알고 있어야할 것

1. 동적매핑이던 정적 매핑이던 매핑 정보가 생성된 후에는 타입이 안맞은 경우 파싱에러가 발생한다.

 

2. 정적 매핑은 언제 사용해야하는가?

 

 2.1 document들의 필드들이 가지는 값에 따라 타입을 지정해줄 필요가 있을 때 사용한다.

 2.2  불필요한 색인이 발생하지 않게 하기 위할 떄

  ES에서는 문자열 필드를 동적으로 매핑할 경우 자동으로 text와 keyword 라는 타입으로 생성한다.

  즉 하나의 필드에 text, keyword라는 2가지 타입이 생성되기 때문에 해당 필드를 조회할 때

  text로 한번, keyowrd로 한번 총 2번의 색인이 발생되어버리는데 이러한 불필요한 색인을 없애기 위해서

  정적 매핑을 해야한다.