본문 바로가기
Elastic Seaerch

ElasticSearch mapping

by yang sing 2022. 5. 20.

매핑이란?

  - RDBMS의 스키마와 비슷한 역할

  - json 형태의 데이터를 루씬이 이해할 있도록 바꿔주는 작업

  - 다이나믹 매핑

    - json 도큐먼트의 데이터 타입에 맞춰 자동으로 인덱스 매핑을 해주는것

  - 명시적 매핑

    - 인덱스를 생성할 인덱스 매핑을 직접 정의하거나 mapping API 통해 매핑을 지정

 

매핑 타입

데이터 타입 설명
text* 전문 검색이 필요한 데이터로 텍스트 분석기가 텍스트를 작은 단위로 분리
keyword* 텍스트 분석을 하지 않고 원문을 통째로 인덱싱
date 날짜 / 시간
Bye, short, integer, long 정수형 타입
scaled_float, half_float, double, float 실수형 타입
scaled_float : float 데이터에 특정 값을 곱해 정수형으로 바꾼 데이터
half_float : 16비트 부동소수점 실수 데이터
boolean /거짓
ip Ipv4, ipv6타입의 ip 주소
geo-point, geo-shape geo-point : 위도, 경도
geo-shape: 임의의 지형
integer_range, long_range, float_range, double_range, ip_range, date_range 범위를 설정할 있는 데이터, 최솟값과 최댓값을 통해 범위를 입력
object 계층 구조를 갖는 형태로 필드 안에 다른 필드들이 들어갈 있다.
nested 배열형 객체를 저장, 객체를 따로 인덱싱하여 객체가 하나로 합쳐지는 것을 막고 배열 내부의 객체에 쿼리로 접근 가능
join 부모/자식 과계를 표현할 있다.

 

검색을 위한 문자열 타입 두 종류 비교

1.  text 타입

  - 일반적으로 문장을 저장하는 타입

  - 여러 단어가 나열된 문자열을 텍스트 타입으로 지정

  - 분석기에 의해 토큰으로 분리

  - 분리된 토큰들은 역인덱싱처리 ( 역인덱스에 저장된 토큰들을 용어, term이라 불린다.)

  

2. keyword 타입

  - 카테고리, 사람 이름, 브랜드 등 유의미한 값들의 집합과 같은 범주형 데이터에 사용

  - 분석기를 거치지 않고 문자열 전체가 하나의 용어로 인덱싱

  - 완전 일치 검색을 하며 집계나 정렬에 사용

 

매핑 필드 종류

1. 단일 필드

  - 하나의 필드 안에 하나의 데이터 타입이 정의 되어있는 필드

{
  "name": {
    "type" "text"
  }
}

 

2. 멀티 필드

  - 단일 필드 입력에 대한 여러 하위 필드를 정의하는 기능

  - fields라는 매핑 파라미터가 사용

  - 전문 검색(text)가 필요하면서 정렬(keyword)가 필요한 경우

{
  "name": {
    "type" "text",
    "fields": {
      "keyword": {
        "type": "keyword"
      }
    }
  }
}​

 

 - 인덱스 템플릿

  - 설정이 동일한 복수의 인덱스를 만들 때 사용

  - 인덱스 매핑과 세팅을 효율적으로 설정

 

 

참고 도서 : 엘라스틱 스택 개발부터 운영까지 (저자 : 김준영,정상운)