(ElasticSearch) _id와 _routing의 이해

기본적으로 문서를 색인하기 위해서는 문서의 unique id가 필요하다.
엘라스틱 서치에서는 _id라는 필드를 이용해서 문서의 Uniqueness를 보장해 주고 있습니다.
이 값은 hash알고리즘을 이용해서 색인할 shard id를 생성합니다.
또한, _id값은 GET API를 이용해서 문서를 직접 access할 수 있게 해줍니다.

$curl -XGET http://localhost:9200/INDEX/TYPE/_id


_routing도 _id와 동일하게 해당 값을 이용해서 shard id를 구한다는 점에서 동일하며 mapping설정도 동일 합니다.

차이점이 있다면 _id는 문서 자체에 대한 routing이고, _routing는 문서 집단 또는 그룹에 대한 routing입니다.

또한 검색입장에서는 _id는 문서 하나를 검색해서 가져오지만, _routing은 지정된 key값에 의한 shard들을 대상으로 검색을 하게 됩니다.



* _id가 1인 문서 검색
$curl -XGET http://localhost:9200/INDEX/TYPE/1



* _routing을 하나 만 지정한 문서 검색(routing값은 sports)
$curl -XGET http://localhost:9200/_search?routing=sports

--> sports에 해당하는 shard id가 0이라면 0번 shard로만 검색 질의가 실행됩니다.


*_routing을 두 개 지정한 문서 검색(routing값은 sports, entertainment)
$curl -XGET http://localhost:9200/_search?routing=sports,entertainment

댓글

이 블로그의 인기 게시물

(18장) WebSocekt과 STOMP를 사용하여 메시징하기

(네트워크)폴링방식 vs 롱 폴링방식

(ElasticSearch) 결과에서 순서 정렬