routing_missing_exception: Routing value is required for this document(このドキュメントにはルーティング値が必要)
Elasticsearch意味
ドキュメントへのアクセス/インデックス作成にルーティング値が必要だが、指定されていない。ルーティングがないため、Elasticsearch はドキュメントがどのシャードに属するか判断できなかった。
原因
インデックスのマッピングで _routing required=true が定義されている、parent-join (親子) 関係を使用しており子ドキュメントにルーティングが必要、または index/get/update/delete 要求で routing パラメータが省略された。カスタムルーティングで書き込んだドキュメントをルーティングを指定せずに読み取るのが典型的な原因。
対処方法
要求でルーティング値を明示的に指定する (例: index/get/update/delete 呼出しで ?routing=value)。parent-join では、子ドキュメントのルーティングとして親の id を渡す。読み取り/更新/削除には、ドキュメント書き込み時と同じルーティングを使用する。マッピングの _routing の必須設定 (required) を見直す。
同じデータベースの他の項目
- document_source_missing_exceptionDocument source is missing(ドキュメントの source がない)
- 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 が少なくとも 1 つ含まれる)