실전에서 바로 써먹는 Elasticsearch 입문 (검색 최적화편)
what-is-mapping-and-datatypes
✅ 매핑(mapping)이란?
매핑(mapping)이란 도큐먼트(document)의 각 필드가 어떤 데이터 타입을 가지고 있는 지 정의하는 설정을 의미한다.
MySQL에서 테이블을 만들 때 어떤 유형의 데이터를 넣을 지 스키마(schema)를 정의하는 것처럼, Elasticsearch에서 인덱스를 만들 때 어떤 유형의 데이터를 넣을 지 매핑(mapping)을 정의할 수 있다.
✅ 데이터 타입(data type)
Elasticsearch에서 데이터 타입의 종류는 아주 많다. 그 중 우리는 자주 사용하는 데이터 타입에 대해서만 알아볼 것이다.
[숫자]
- 10억 이하의 정수만 저장하면 되는 경우 :
integer
- 10억이 넘어가는 정수를 저장해야 될 수도 있는 경우 :
long
- 실수(소숫점을 가진 숫자 포함)를 저장해야 될 수도 있는 경우 :
double
[문자]
- 문자열을 토큰으로 쪼개서 저장하고 싶은 경우 :
text - 유연한 검색이 필요할 때 (완전히 일치하지 않아도 비슷한 데이터를 조회해오는 방식)
- 문자열을 토큰으로 쪼개지 않고, 문자열 그대로 저장하고 싶은 경우 :
keyword - 정확한 검색이 필요할 때 (정확하게 일치할 때만 데이터를 조회해오는 방식)
- ex) 휴대폰 번호(
010-1234-5678), 이메일(jscode@gmail.com), 주문번호(156293920) - 주의) 계산에서 쓰는 값이 아니라면 숫자가 아닌 문자로 저장해야 한다. 예를 들어, 휴대폰 번호나 주민등록번호에 숫자를 더하거나 빼지 않는다. 즉, 휴대폰 번호나 주민등록번호는 숫자가 아닌 문자로 저장해야 한다.
[기타]
- 날짜 데이터를 저장해야 하는 경우 :
date
- true, false를 저장해야 하는 경우 :
boolean
👨🏻🏫
다음 강의에서는 매핑(mapping)이 가지는 특징에 대해 알아보자.