[Elasticsearch] Mapping

김우경·2022년 5월 13일
0

Elasticsearch

목록 보기
1/1
post-thumbnail

기본적으로 Mapping을 update, create 를 하려면 기존 Mapping에
아래 내용처럼 추가를 해주면 되지만

PUT /my-index-000001/_mapping
{
  "properties": {
    "email": {
      "type": "keyword"
    }
  }
}

관리하기 쉽게 template으로 Mapping 한 경우 기존 template Mapping 추가하여 덮어쓰는 형식으로 한다.

PUT _template/template_1
{
  "index_patterns": ["te*", "bar*"],
  "settings": {
    "number_of_shards": 1
  },
  "mappings": {
    "_source": {
      "enabled": false
    },
    "dynamic" : "strict", // Dynamic Mapping 기능 해제
    "properties": {
      "host_name": {
        "type": "keyword"
      },
      "created_at": {
        "type": "date",
        "format": "EEE MMM dd HH:mm:ss Z yyyy"
      }
    }
  }
}

해당 template Mapping 헷갈린 부분은 " dynamic:strict " 이다.
기본적으로 Elasticsearch은 Mapping 선언해주지 않더라도
type:keyword로 잡아주며 자동적으로 추가되지만,
해당 문구를 선언하면 동적으로 잡아주는 Mapping 기능 해제한다.

Aliases
Mapping후 alias를 선언해주거나, Mapping동시에 선언이 가능하다.

POST /_aliases
{
	"action":[
    	{
        	"remove/add":{
            	"index":"template_1"
                "alias":"template"
            }
        }
    ]
}

nested
properties 원하는 필드에 선언을 해준다.

PUT _template/template_1
{
  "index_patterns": ["te*", "bar*"],
  "settings": {
    "number_of_shards": 1
  },
  "mappings": {
    "_source": {
      "enabled": false
    },
    "dynamic" : "strict", // Dynamic Mapping 기능 해제
    "properties": {
      "host_name": {
        "type": "keyword"
      },
      "created_at": {
        "type": "date",
        "format": "EEE MMM dd HH:mm:ss Z yyyy"
      },
      "file":{
      	"type":"nested",
         "field_name":{
         	-- 그 외 같음 --
         }
      }
    }
  }
}

request query

{
	"nested":{
    	"path":"nested field_name"
        	"query":{
            	그 외 같음 
            }
    }
}

0개의 댓글