[컴] ElasticSearch 에서 Type 이 사라졌다

 elasticsearch 의 type / typeless / 일레스틱서치 / 일라스틱서치 / 일래스틱서치

ElasticSearch 에서 Type 이 사라졌다

v7.0.0 부터 default mapping 이 사라졌다. 그 대안을 아래 글에서 이야기한다. 여기서는 대부분 아래 글의 내용을 정리한다.

5.3 의 문서를 보면, type 에 대한 이야기가 있다.

하지만 7.12 의 문서에서는 type 에 대한 이야기를 더이상 하지 않는다.

Data in: documents and indices | Elasticsearch Guide [7.12] | Elastic

mapping type 이 사라졌다.

mapping type 이 사라져서 mapping type 으로 query 를 할 수 없다. 물론 아직까지 지원하지만, 앞으로 사라질 것이다. deprecated 됐다. elasticsearch 는 내부적으로 _doc라는 dummy type 만 사용한다. 이것도 임시적인듯 하다.(참고: Moving from types to typeless APIs in Elasticsearch 7.0 | Elastic Blog)

원래는 아래처럼 index 를 생성할 때 mapping 아래 type 을 둘 수 있었다. 그래서 그 type 에 대해 어떤 mapping 을 사용할지를 정할 수 있었다. 그런데 type 이 사라졌기 때문에 type 에 대한 mapping 도 사라지는 것이다.

curl -XPOST ...:9200/my_index -d '{
    "settings" : {
        # .. index settings
    },
    "mappings" : {
        "my_type" : {
            # mapping for my_type
        }
    }
}'

Type 을 사용하지 않고 data 만들기

document type 마다 index 를 만들기

twitter 라는 index 에 user, tweet 2개의 type 이 있고, 이 type 들은 모두 user_name 이라는 field 를 갖는다고 하자. 이 경우 user type 에 있는 user_name field 는 다른 tweet type 에 있는 uesr_name field 에 영향을 받을 수 있다.

그래서 서로 영향이 없도록 독립된 index 로 만들라고 한다.

twitter ---+--- user --+-- user_name
           |
           +--- tweet --+-- user_name
tweets ---+--- _doc --+-- user_name

users ---+--- _doc --+-- user_name

Custom type field

이건 간단히 위에서 혼동을 주는 field 를 가진 2개의 type 을 하나로 묶는 것이다.

twitter ---+--- user --+-- user_name
           |
           +--- tweet --+-- user_name

을 아래처럼 변경하라는 것이다.

twitter ---+--- _doc --+-- type
                       |
                       +-- user_name

See Also

  1. 쿠...sal: [컴][웹] ElasticSearch Mapping

References

  1. Removal of mapping types | Elasticsearch Guide [7.12] | Elastic
  2. Moving from types to typeless APIs in Elasticsearch 7.0 | Elastic Blog

댓글 없음:

댓글 쓰기