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 | 
													Tags
													
											
												
												- Spring
 - kubernetes
 - 오블완
 - 클린아키텍처
 - 김영한
 - JavaScript
 - 스프링핵심원리
 - 스프링 핵심원리
 - Effective Java
 - 스프링
 - 엘라스틱서치
 - 카카오
 - 카카오 면접
 - 티스토리챌린지
 - 이펙티브 자바
 - 스프링부트
 - Sort
 - effectivejava
 - 이펙티브자바
 - 코딩테스트
 - Effective Java 3
 - 예제로 배우는 스프링 입문
 - 알고리즘정렬
 - 자바스크립트
 - k8s
 - 이차전지관련주
 - 알고리즘
 - java
 - 자바
 - ElasticSearch
 
													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