document_source_missing_exception: Document source is missing
Elasticsearch의미
작업에 문서의 _source 필드가 필요하지만 저장되어 있지 않다. source가 비활성화된 인덱스에서 _source가 필요한 작업(예: 부분 업데이트, source 조회)을 시도했다.
원인
인덱스 매핑에 _source: {enabled: false}가 설정되어 있다. 문서의 원본 JSON이 저장되지 않으므로 부분 업데이트, reindex, _source를 반환하는 쿼리가 동작할 수 없다. 공간 절약을 위해 source를 비활성화한 구성이 이 문제를 일으킨다.
해결 방법
_source가 필요한 작업에는 매핑에서 source가 활성화되어 있어야 한다. 새 인덱스를 생성할 때 _source를 활성화된 상태로 둔다(기본적으로 활성화되어 있다). 기존 인덱스에서 _source가 비활성화되어 있다면 업데이트 대신 전체 문서를 다시 인덱싱한다(index API로 덮어쓰기). 공간 절약을 위해서는 source를 완전히 비활성화하는 대신 _source 필터링(includes/excludes) 또는 synthetic _source를 고려한다.
같은 데이터베이스의 다른 항목
- settings_exceptionInvalid settings
- shard_not_found_exceptionShard not found
- not_x_content_exceptionCompressor detection error / body is not valid content (압축 감지 오류 / 본문이 유효한 콘텐츠가 아님)
- node_not_connected_exceptionNode is not connected
- receive_timeout_transport_exceptionRequest timed out waiting for a response from another node (다른 노드의 응답 대기 중 요청 타임아웃)
- routing_missing_exceptionRouting value is required for this document (이 문서에는 routing 값이 필요)
- too_many_buckets_exceptionTrying to create too many buckets