[ELASTICSEARCH 공부하기] MAPPING

ElasticSearch를 도입하기전, ElasticSearch에대해 공부하기 위해 레퍼런스를 읽으면서 번역&정리한 글입니다.
문서 전체를 번역한 것이 아니라 개인적으로 정리가 필요하다 싶은 내용만 정리하였습니다.

Mapping은 document와 document의 field가 어떻게 저장되고 인덱싱되는지를 정하는 것이다.

Field Datatypes:
- Simple types like text, keyword, date, long, double, boolean, ip
- JSON형식을 띄는 object, nested
- 특수한 경우에 사용되는 geo_point, geo_shape, completion

잘모르는 타입들 정리:
Keyword datatype:
- 주로 이메일주소, 우편번호 등 형식을 갖춘 데이터들을 저장하기 위해 사용된다.
- 주로 필터링, 정렬, 종합을 위해 사용된다.
- 정확한 값으로면 검색이 가능하다
Text datatype:
- text로 지정된 field는 anlayzer를 통해 변환된다.(한글은 anlayzer-nori 플러그인을 별도로 깔아야됨)
- 변환된 후에는 ES가 하나의 단어를 전체 내용중에서 찾을 수 있게 해준다.
Nested datatype:
- nested타입은 object타입의 특수한 형태로써 쉽게 말하자면 object의 list라고 생각하면된다.
- 그리고 ES는 inner object라는 형식을 지원하지 않기때문에 이 list를 flatten하여 처리한다.
PUT my_index/_doc/1
{
  "group" : "fans",
  "user" : [ 
    {
      "first" : "John",
      "last" :  "Smith"
    },
    {
      "first" : "Alice",
      "last" :  "White"
    }
  ]
}
위의 코드블럭이 처리될때는 아래로 변환되어 처리된다.
{
  "group" :        "fans",
  "user.first" : [ "alice", "john" ],
  "user.last" :  [ "smith", "white" ]
}

댓글

이 블로그의 인기 게시물

[Django 공식문서 번역] REST Framework - Viewset and Router

Intel Open WebRTC Toolkit(OWT) Media server 설치하는법

[Django REST Framework] create() vs perform_create()