티스토리 뷰

반응형

Elasticsearch는 존재하지 않는 인덱스에도 데이터를 넣을 수 있다.

 

이러한 동작이 가능한 이유는 Elasticsearch에서 색인을 알아서 생성해주기 때문이다.

 

이렇게 알아서 생성해주는 기능을 Elasticsearch에서는 동적 매핑(Dynamic Mapping)이라고 명칭하고 있다.

 

즉 data라는 인덱스가 없는 상태에서 아래와 같은 명령을 날리면 자동으로 인덱스가 생성되고 해당 인덱스에 데이터가 색인된다.

PUT data/_doc/1 
{
    "count": 5,
    "text" : "text",
    "date" : "2019-08-03"
}

이렇게 자동으로 생성된 인덱스의 매핑 정보를 확인해보면 아래와 같이 나오는데

* 매핑 정보를 확인하는 명령

GET data/_mapping

* 결과

{
  "data" : {
    "mappings" : {
      "properties" : {
        "text" : {
          "type" : "text",
          "fields" : {
            "keyword" : {
              "type" : "keyword",
              "ignore_above" : 256
            }
          }
        },
        "count" : {
          "type" : "long"
        },
        "date" : {
          "type" : "date"
        }
      }
    }
  }
}

 

숫자를 색인하면 long 타입으로 날짜를 색인하면 date 타입으로 자동으로 매핑되며 문자열의 경우에는 text 타입과 keyword 타입을 동시에 제공하는 멀티 필드로 매핑되는 것을 볼 수 있다.

 

이러한 기능을 사용하는 데 있어서 간단하게 테스트하는 용도로는 쉽게 사용되어 좋지만 실제로 데이터를 색인하고 색인된 데이터를 검색할 때는 좋지 않을 가능성이 매우 높기 때문에 데이터를 색인하기 전에 매핑 정보를 미리 정의하여 인덱스를 생성하는 것이 좋다.

 

참고

https://www.elastic.co/guide/en/elasticsearch/reference/current/dynamic-mapping.html

반응형
댓글
반응형
최근에 올라온 글
Total
Today
Yesterday
글 보관함
«   2024/05   »
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