[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" ]
}
댓글
댓글 쓰기