인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

한나라님의 프로필 이미지
한나라

작성한 질문수

ElasticSearch Essential

다섯 번째 강의 - 매핑 이해하기

동잭매핑 매핑 시 색인 질문

해결된 질문

작성

·

86

·

수정됨

0

동적매핑에 의해 매핑 정보가 생성된 후에 타입이 안 맞을 경우 파싱 에러가 발생합니다 부분을 따라했는데 저 같은 경우에는 그냥 색인이 되어버리는데 그 부분에 대해 궁금합니다.(엘라스틱서치 6버전을 사용합니다.)

 

PUT /movie_mapping_test/_doc/1

{

"movieCd" : "3",

"movieNm" : "US",

"prdtYear": 2014,

"rating" : 3.0

} 을 한 후에

GET movie_mapping_test/_mapping 을 하니

"movie_mapping_test": {

"mappings": {

"_doc": {

"properties": {

"movieCd": {

"type": "text",

"fields": {

"keyword": {

"type": "keyword",

"ignore_above": 256

}

}

},

"movieNm": {

"type": "text",

"fields": {

"keyword": {

"type": "keyword",

"ignore_above": 256

}

}

},

"prdtYear": {

"type": "long"

},

"rating": {

"type": "float"

}

}

}

}

} 분명히 prdtYear long 이고 rating은 float 입니다.

 

하지만 PUT /movie_mapping_test/_doc/1 <PUT를 해도 POST를 해도 같습니다/>

{

"movieCd" : "3",

"movieNm" : "US",

"prdtYear": 2014,

"rating" : "3.0"

}

을 하니 에러는 커녕 "_source": {

"movieCd": "3",

"movieNm": "US",

"prdtYear": 2014,

"rating": "3.0"

} 이렇게 잘 들어갑니다 강의 대로 동적매핑을 한 후 float를 "3.0"을 하니 에러는 커녕 잘 들어가는 부분이 궁금합니다,.

 

정적매핑을 해도 비슷합니다...

답변 1

0

강진우님의 프로필 이미지
강진우
지식공유자

네. 이거 제가 직접 해보니 말씀 하신 것처럼 ratings: "3.0" 도 색인이 되네요. 다만 ratings: "abc" 이렇게 같은 따옴표라도 명시적으로 문자열인 경우에는 매핑 에러가 발생하구요.

그리고 처음부터 ratings: "3.0" 으로 색인할 경우에는 매핑이 keyword 로 되긴 합니다. 따라서 현재 이슈는 float 타입으로 생성된 매핑 정보에서 "숫자" 타입의 데이터가 색인이 되는 게 문제로 보입니다.

이건 시간을 두고 좀 더 확인해 봐야 할 것 같습니다. 업데이트 되는 내용이 있으면 다시 공유 드리겠습니다.

한나라님의 프로필 이미지
한나라

작성한 질문수

질문하기