매핑

WAS·5일 전
0

Elasticsearch

목록 보기
3/3

✅ 매핑

  • 도큐먼트의 각 필드가 어떤 데이터 타입을 가지고 있는지 정의하는 설정

RDBMS에서 테이블을 만들고 어떤 유형의 데이터를 넣는지 정의 = 스키마를 정의


✅ Elasticsearch 의 데이터 타입 (중요한것만)

[숫자]

  • 10억 이하의 정수를 저장할 때 : integer
  • 10억이 넘어가는 정수를 저장할 때 : long
  • 실수(소숫점을 가진 숫자 포함) 을 저장할 때 : double

[문자]

  • 문자열을 토큰으로 쪼개서 저장할 때 : text
    = 유연한 검색이 필요할 때 (완전히 일치하지 않아도, 비슷한 데이터를 조회할 때)
  • 정확한 검색이 필요할 때와 문자열 그대로 저장할 때 : keyword
    = 데이터가 정확하게 일치할 때 ex) 휴대폰번호 010-1234-5678 이메일 abc@naver.com

[기타]

  • 날짜 데이터 저장할 때 : date
  • true, false 저장할 때 : boolean

✅ 매핑의 특징

  • (1) : null 을 허용

Elasticsearch는 매핑을 정의하더라도
해당 필드가 반드시 존재하거나 null이면 안 된다는 제약을 두지 않는다

ex)
다음 예시처럼 매핑을 정의했을 때

"mappings": {
  "properties": {
    "title": { "type": "text" }
    "content": { "type": "text" }
  }
}

데이터를 이런식으로 넣어도 문제없이 들어간다

{ 
  "title": null,
  "content": "hihi"
}

{ 
  "content": "hihi"
}
  • (2) : 배열을 허용

Elasticsearch는 별도의 설정 없이 배열(array) 형태의 데이터를 삽입할 수 있다

다음과 같이 매핑을 정의했을 때

"mappings": {
  "properties": {
    "hashtags": { "type": "text" }
  }
}

이런식으로 데이터를 넣을 수 있다

{ 
  "hashtags": "여행"
}

{ 
  "hashtags": ["여행", "요리"]
}

배열에 있는 값이 각각 토큰으로 분리되서 역인덱스로 저장이되서
여행 이라는 키워드로 검색하면 위 2가지 데이터 전부 다 조회된다

profile
우측 상단 햇님모양 클릭하셔서 무조건 야간모드로 봐주세요!!

0개의 댓글