routing_missing_exception: Routing value is required for this document
ElasticsearchNe demek?
Belgeye erişim/indeksleme için bir yönlendirme (routing) değeri zorunlu olduğu halde sağlanmadı. Elasticsearch, belgenin hangi shard'a ait olduğunu routing olmadan belirleyemedi.
Neden olur?
Index mapping'inde _routing required=true olarak tanımlı; parent-join (parent/child) ilişkisi kullanılıyor ve child belgeler için routing gerekiyor; ya da index/get/update/delete isteğinde routing parametresi atlanmış. Özel routing ile yazılan belgeleri routing vermeden okumaya çalışmak tipik nedendir.
Nasıl çözülür?
İstekte routing değerini açıkça belirtin (ör. index/get/update/delete çağrılarında ?routing=deger). Parent-join kullanıyorsanız child belgelerde ebeveynin id'sini routing olarak geçirin. Belge yazılırken hangi routing kullanıldıysa okuma/güncelleme/silmede de aynısını kullanın. Mapping'de _routing gereksinimini (required) gözden geçirin.
Aynı motorda diğer kayıtlar
- 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
- max_bytes_length_exceeded_exceptionDocument contains at least one immense term that is too long