해결된 질문
작성
·
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
타입으로 생성된 매핑 정보에서 "숫자"
타입의 데이터가 색인이 되는 게 문제로 보입니다.
이건 시간을 두고 좀 더 확인해 봐야 할 것 같습니다. 업데이트 되는 내용이 있으면 다시 공유 드리겠습니다.