(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
엘라스틱 서치에서는 _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
댓글
댓글 쓰기