routing_missing_exception: Routing value is required for this document (이 문서에는 routing 값이 필요)
Elasticsearch의미
문서에 접근/인덱싱하려면 routing 값이 필요하지만 제공되지 않았다. routing 없이는 Elasticsearch가 문서가 어떤 샤드에 속하는지 결정할 수 없었다.
원인
인덱스 매핑에 _routing required=true가 정의되어 있거나, parent-join(parent/child) 관계를 사용해 자식 문서에 routing이 필요하거나, index/get/update/delete 요청에서 routing 파라미터가 누락된 경우다. 사용자 정의 routing으로 쓴 문서를 routing 없이 읽는 것이 전형적인 원인이다.
해결 방법
요청에 routing 값을 명시적으로 지정한다(예: index/get/update/delete 호출에 ?routing=value). parent-join에서는 자식 문서의 routing으로 부모의 id를 전달한다. 문서를 쓸 때 사용한 것과 같은 routing을 읽기/갱신/삭제에도 사용한다. 매핑의 _routing 요구 사항(required)을 검토한다.
같은 데이터베이스의 다른 항목
- document_source_missing_exceptionDocument source is missing
- node_not_connected_exceptionNode is not connected
- receive_timeout_transport_exceptionRequest timed out waiting for a response from another node (다른 노드의 응답 대기 중 요청 타임아웃)
- too_many_buckets_exceptionTrying to create too many buckets
- shard_lock_obtain_failed_exceptionObtaining shard lock timed out
- parsing_exceptionFailed to parse the search request / query DSL (검색 요청 / query DSL 파싱 실패)
- max_bytes_length_exceeded_exceptionDocument contains at least one immense term that is too long (너무 긴 거대한 term이 문서에 포함됨)