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
댓글 없음:
댓글 쓰기