아무거나

타입 매핑 방법 본문

Data Store/Elastic Stack

타입 매핑 방법

전봉근 2019. 5. 29. 10:47
반응형

[elasticsearch]

타입 매핑 관련..

 

일반적으로 elasticsearch는 오토매핑이라 넘어오는 데이터순으로 필드들이 생성되어진다.

그럴경우에 데이터 형태가 맞지않는 경우 

 

예를들어 1 or 2 등의 데이터를 string값으로 인식하여 내려주는경우. 즉, 이 값을 int값으로 사용하고 싶을 떄 타입매핑을 사용한다.(데이터 형식을 정해줌.)

보통 인덱스 최초생성때 타입매핑을 해준다. 

 

그 이유는 인덱스별로 alias를 사용하는경우 alias가 변경될때마다 계속 인덱스를 생성하므로 직접 타입매핑 api를 날려도 소용이없는 상황이 생기기 때문이다. 

또한 이런 의문이 생길수도있다. 

"난 데이터형식에 대한 정의가 명시적인게 좋다" 이럴 경우에 최초에 생성하면되는데 속도가 매우 느려진다고 한다. --> 자세한건 찾아보자

 

임의적으로 추가하는 명령어는

curl -XPUT 'localhost:9200/ws_products/product/_mapping' -H 'Content-Type: application/json' -d '{ "product": { "properties": { "product_type": { "type": "long" } } } }'     // product_type 타입 매핑 추가

 

인덱스 생성시 추가하는 명령어는

 "settings": {
 
    .....

    "mappings": {
        "product": {
            "properties": {
                "registerd_time": {
                    "format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis",
                    "type": "date"
                },
                "click": {
                    "type": "float"
                },
                "click_update_time": {
                    "format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis",
                    "type": "date"
                },
                "title": {
                    "analyzer": "arirang_custom",
                    "type": "text"
                },
                "click_registerd_time": {
                    "format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis",
                    "type": "date"
                }
                ,
                "product_type": {
                    "type": "integer"
                },
                "storePid": {
                    "type": "text"
               }
            }
        }
    }
}​ 
반응형
Comments