조회 방법
ES mapping은 사실상 RDB의 schema이다.
조회 방법은
GET $URI/$INDEX_NAME/_mapping
Shell
복사
을 사용하면 된다.
조회 결과 dynamic 이란 값과 dynamic_templates 란 결과가 나오는데 이 의미는 다음과 같다.
dynamic
정의되어 있지 않은 필드가 POST 될 경우 어떻게 할 것인가?
1.
true : 새로운 필드를 자동 감지해 매핑에 추가한다.
2.
false : 새로운 필드는 무시하고 색인하지 않는다.
3.
strict : 새로운 필드가 들어오면 에러를 발생시킨다.
dynamic_templates
•
만약 dynamic=true 로 되어 있어 자동 매핑이 일어날 경우, 어떤 필드를 어떤 타입으로 매핑할지 정할 수 있다.
•
패턴 기반으로 매핑 규칙 정의가 가능하다.
{
"dynamic_templates": [
{
"meta_fields": {
"path_match": "meta.*",
"mapping": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword"
}
}
}
}
}
]
}
JSON
복사
위 예시를 보면, 예를 들어 meta 로 시작하는 (meta.xxx 와 같이 nested 되어 있는 필드 포함) 필드는 text + keywrod 멀티 타입으로 매핑한다.
text 타입 vs keyword 타입
•
text 타입 : 자연어 검색 처리가 들어가는 유형
•
keyword 타입 : 흔히 생각하는 String, inverted file이 만들어지지 않는다.
멀티 필드란?
•
한 필드를 여러 type으로 색인하는 것. 색인이 이루어지는 type에 따라 사용가능한 query가 되기 때문에 멀티 필드를 써야 할 수 있다.
•
하지만, 문자열 + 숫자 조합은 불가. 사실상 text , kewyrod, tokenized keword 같이 문자열에 한해 멀티 필드를 설정할 수 있다.