[21.09.13] 엘라스틱서치 매핑(매핑의 타입) - 2
글 작성자: nouu
http://www.yes24.com/Product/Goods/103030516
엘라스틱 스택 개발부터 운영까지 - YES24
데이터를 처리하는 데 서로 잘 맞지도 않는 오픈소스 기술들을 굳이 동원해야 할까? 제각각인 오픈소스들을 통합하고 운영하느라 지친 개발자와 운영자들을 위한 솔루션! 이제 엘라스틱 스택
www.yes24.com
해당 서적을 통해 글을 작성했습니다.
지난 엘라스틱 스택 작성 글을 봤듯이 다이나믹 매핑과 명시적(explicit) 매핑을 알아보았다.
명시적 매핑을 위해서는 기본적인 데이터 타입들을 이해하고 외울 필요가 있다.
예를들어 명시적 매핑을 정의 할 때 다음과 같은 구문을 사용하여 명시적 매핑을 한다.
PUT index3
{
"mappings": {
"properties": {
"age": {"type": "short"},
"name": {"type": "text"},
"gender": {"type": "keyword"}
}
}
}
PUT 인덱스명
{
"mappings": {
"properties": {
"필드명": {"type": "타입"}
}
"age" 필드명 type를 short, "name" 필드명 type를 text, "gender" 필드명 type를 keyword로 설정한 구문이다. 매핑에 대한 다양한 데이터 타입을 알아야 명시적 매핑을 수월하게 진행할 수 있을 것 이다.
엘라스틱서치의 데이터 타입은 다음과 같다.
데이터 형태 | 데이터 타입 | 설명 |
텍스트 | text | 전문 검색이 필요한 데이터로 텍스트 분석기가 텍스트를 작은 단위로 분리한다. |
텍스트 | keyword | 정렬이나 집계에 사용되는 텍스트 데이터로 분석을 하지 않고 원문을 통째로 인덱싱한다. |
날짜 | date | 날짜/시간 데이터 |
정수 | byte, short, integer, long | → byte : 부호가 있는 8비트 데이터 (-128 ~ 127) → short : 부호가 있는 16비트 데이터 (-32,768 ~ 32,767) → integer : 부호 있는 32비트 데이터 (-2^31 ~ 2^31 -1) → long : 부호 있는 64비트 데이터 (-2^63 ~ 2^63 - 1) |
실수 | scaled float, half_float, double, float | →scaled float : float 데이터에 특정 값을 곱해 정수형으로 바꾼 데이터. →half_float : 16비트 부동소수점 실수 데이터 →double : 32비트 부동소수점 실수 데이터 →float : 64비트 부동소수점 실수 데이터 |
IP 주소 | ip | ipv4, ipv6 타입 IP 주소를 입력할 수 있다. |
위치 정보 | geo-point, geo-shape | →geo-point : 위도, 경도 값을 갖는다. →geo-shape : 하나의 위치 포인트가 아닌 임의의 지형 |
불린 | boolean | 참/거짓 데이터로 true/false만을 값으로 갖는다. |
범위 값 | integer_range, long_range, float_range, double_range, ip_range, date_range | 범위를 설정할 수 있는 데이터이다. |
객체형 | object | 계층 구조를 갖는 형태로 필드 안에 다른 필드들이 들어갈 수 있다. ex) name: {"first": "kim", "last": "tony"}로 타입을 정의한다면 name.first/name.last 형태로 접근 가능하다. |
배열형 | nested | 배열형 객체를 저장한다. |
배열형 | join | 부모 자식 관계를 표현 할 수 있다. |
다음에는 텍스트 형태중 text와 keyword 타입의 차이점을 정리하겠다.