반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- JavaScript
- Effective Java
- 카카오
- 알고리즘
- 이펙티브 자바
- ElasticSearch
- effectivejava
- 코딩테스트
- 스프링 핵심원리
- 카카오 면접
- 알고리즘정렬
- k8s
- 스프링
- 예제로 배우는 스프링 입문
- 이차전지관련주
- Spring
- 스프링부트
- 자바
- 스프링핵심원리
- Effective Java 3
- java
- kubernetes
- 엘라스틱서치
- 오블완
- 이펙티브자바
- 김영한
- 클린아키텍처
- Sort
- 티스토리챌린지
- 자바스크립트
Archives
- Today
- Total
Kim-Baek 개발자 이야기
[Elasticsearch] Mapping API 본문
Mapping
Mapping
은 Document가 어떤 field들을 포함하고 저장할지를 정의하는 것이다.- index를 생성하면 자동으로 기본 mapping이 생긴다(Dynamic Mapping).
- 각각의 index는 하나 이상의 mapping type들을 가지고 있다.
- Mapping type은 Meta-field 와 Field or property 을 가지고 있다.
Field Datatype
- 각각의 field들은 데이터 타입을 가지고 있다.
- 간단한 데이터 타입(text, keyword, date, long, double..) 부터 복잡한 데이터 타입(array, object..) 등 document의 field들을 위한 타입이 존재한다.
- Field를 사용하는 목적과 방법에 따라 Datatype을 사용하는 것은 유용하다.
String 필드는 크게 text와 keyword 타입이 존재한다.
text type은 full-text search에 사용된다. analyzed되어서 문자열을 각각의 단어의 리스트로 쪼개진다.
keyword는 sorting이나 aggregation에 주로 사용된다.
jea-hyun을 text type으로 설정하면 [jea,hyun]이 되고 keyword type으로 설정하면 [jea-hyun]이 된다.
Dynamic Mapping
인덱스를 생성하면 자동적으로 mapping이 생성된다.
# index 생성 & 데이터 넣기
curl -XPUT 'localhost:9200/study/mytype -d' '{
"name" : "jeahyun",
"date" : "2020-08-09"
}'
# mapping 확인
curl -XGET 'localhost:9200/study/_mapping/mytype?pretty'
Dynamic mapping에 의해서 기본으로 datatype이 설정된다.
"study" : {
"mappings" : {
"myType" : {
"properties" : {
"date" : {
"type" : "date"
},
"name" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" : 256
}
}
}
}
}
}
}
Mapping 하기
PUT Mapping API를 이용해 기존에 index의 type에 사용자가 mappping을 해줄 수 있다.
단, 이미 Field에 Data type이 정의되어 있다면 Mapping을 PUT 하면 오류가 발생한다.(Documnet를 Insert하여 Dynamic Mapping이 동작)
이러한 오류가 발생하면 Mapping이 불가능해서 Type에 데이터를 모두 삭제해주고, Create 할 때 Mapping 해주어야 한다.
# Index를 Create 할 때 Mapping 해주기
curl -X PUT 'localhost/study' -d '
{
"mappings": {
"member": {
"properties": {
"name" : {
"type": "keyword"
},
"gender" : {
"type": "keyword"
},
"hobby" : {
"type": "keyword"
}
}
}
}
}'
Reference
https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping.html
반응형
'개발 > Elasticsearch' 카테고리의 다른 글
Elastic Search 란? 장단점 (0) | 2024.11.11 |
---|---|
[Elasticsearch] Aggregation (0) | 2020.08.12 |
[Elasticsearch] Index API (0) | 2020.08.10 |
[Elasticsearch] 기본 개념, Concept, 용어 (0) | 2020.08.09 |
Comments