このページでは、Alibaba Cloud Elasticsearch の使用時にクラスターログ、クライアントログ、またはコマンド出力で発生する可能性のある一般的なエラーについて説明します。
ジャンプ先: 413 Request Entity Too Large · forbids automatic creation of the index · all shards failed · SSL/TLS エラー · No keyword/multi-field defined · path is not accessible on master node · kibana did not load properly · unsupported_operation_exception · NoNodeAvailableException · Unclosed object / ArrayIndexOutOfBoundsException · No field found for metaData · API keys not enabled
413 Request Entity Too Large
1 回の一括書き込みリクエストが http.max_content_length の制限 (デフォルトは 100 MB) を超えています。この制限は変更しないでください。
リクエストごとに書き込まれるデータは、ドキュメント数に平均ドキュメントサイズを乗算した値に等しくなります。ドキュメントサイズは変動するため、まずリクエストあたり 5 MB から調整を始め、最大 15 MB まで増やしてください。ガイダンスについては、「Using and Sizing Bulk Requests」および「HTTP settings」をご参照ください。
"forbids automatic creation of the index"
クラスターでインデックスの自動作成が無効になっています。Elasticsearch コンソールで有効化してください:
-
静的メソッド (推奨): [YML ファイル設定] パネルでインデックスの自動作成を有効にします。手順については、「YML ファイルの設定」をご参照ください。
-
動的メソッド: 対応する API コマンドを実行して、クラスターを再起動せずにインデックスの自動作成を有効にします。
"all shards failed"
このエラーは、クラスターが 1 つ以上のシャードからのクエリを処理できない場合に表示されます。一般的な原因には、ノードの切断、再起動後のシャードの回復途中、またはディスクの破損などがあります。
手順 1:診断
クラスターのモニタリングデータとログを確認して、ディスク領域の不足や、シャードの割り当てをブロックするインデックスまたはクラスター設定の誤りなど、根本原因を特定します。
手順 2:未割り当てシャードの修正
ノードの切断または未割り当てのシャードが原因である場合:
-
シャードの割り当て状況を確認します:
すべてのシャードがすでに割り当てられている場合、このコマンドはエラーを返しますが、これは想定される動作です。
GET /_cluster/allocation/explain -
失敗したシャードの割り当てを再試行します:
POST /_cluster/reroute?retry_failed=true
クラスターログ内の SSL/TLS エラー
プレーンテキストトラフィックが SSL 接続経由で送信されると、クラスターログに次のような SSL/TLS エラーが表示されます。これは通常、暗号化通信を行わないノードが、暗号化が有効になっているノードに接続しようとした場合に発生します。
以下を確認してください:
-
HTTP と HTTPS の不一致: クラスターで HTTPS が有効になっていない場合、アクセスは HTTP 経由でのみ可能です。HTTPS 経由でクラスターにアクセスすると、このエラーがトリガーされます。HTTPS を有効にするには、「HTTPS の有効化」をご参照ください。
-
IP アドレスがホワイトリストに登録されていない: クラスターログに表示されている IP アドレスがパブリック IP アドレスホワイトリストに含まれていることを確認してください。必要な特定の IP アドレスまたは CIDR ブロックのみを追加し、
0.0.0.0/0は追加しないでください。
その他の SSL/TLS エラーパターンについては、「Common SSL/TLS exceptions」をご参照ください。
"No keyword/multi-field defined exact matches for [KeywordField]"
このエラーは、X-Pack SQL プラグインのクエリで text 型フィールドに対して LIKE 演算子を使用した場合に発生します。LIKE 演算子は keyword 型フィールドでの完全一致フィルタリングのみをサポートしています。クエリを keyword フィールドを使用するように切り替えてください。
背景情報については、「Unable to run SQL query on multi fields using Elastic Search v. 7.3」および「SQL and multi-fields」をご参照ください。
"path is not accessible on master node"
このエラーは、ターゲットの Object Storage Service (OSS) バケットがアーカイブストレージクラスを使用している場合に PUT _snapshot/my_backup を実行すると発生します。アーカイブバケットでは、データを読み取る前にオブジェクトの復元が必要であり、これは Elasticsearch のスナップショット操作と互換性がありません。
Elasticsearch クラスターと同じリージョンにある標準ストレージクラスの OSS バケットを使用してください。手順については、「手動スナップショットの作成と手動スナップショットからのデータ復元」をご参照ください。
"kibana did not load properly"
データノードのディスク使用率が 95% を超えると、Elasticsearch は書き込み保護をトリガーし、すべてのインデックスに read_only_allow_delete を設定します。書き込みはブロックされ、読み取りと削除のみが許可されます。
手順 1:高いディスク使用率の解決 (根本原因)
まず、根本的なディスク使用率の問題に対処します。ディスク容量の拡張、未使用インデックスの削除、インデックスライフサイクル管理の設定などのオプションについては、「高いディスク使用率と読み取り専用インデックス」をご参照ください。
手順 2:書き込みアクセスの復元
ディスク使用率の問題を解決した後、すべてのインデックスにまたがる読み取り専用フラグをリセットします:
PUT _settings
{
"index.blocks.read_only_allow_delete": null
}
"unsupported_operation_exception" (aliyun-qos プラグイン)
apack.qos.ratelimit.enabled でスロットリングを有効にした後、リミッターを設定する際にこのエラーが表示されます:
{
"error": {
"root_cause": [
{
"type": "unsupported_operation_exception",
"reason": "unsupported_operation_exception: only define search or bulk action for limit"
}
],
"type": "unsupported_operation_exception",
"reason": "unsupported_operation_exception: only define search or bulk action for limit"
},
"status": 500
}
aliyun-qos プラグインが最新バージョンではありません。GET /_cat/plugins?v を実行して現在のバージョンを確認してください。期待される最新バージョンは次のとおりです:
-
Elasticsearch V7.10:
7.10.0_ali1.6.0.2 -
その他のすべてのバージョン:
<ES version>-rc4
クラスターのバージョンに基づいてアップグレードしてください:
-
V7.10 クラスター: カーネルを V1.6.0 にアップグレードします。「クラスターのバージョンアップグレード」をご参照ください。
-
その他のバージョン: チケットを送信する で、Elasticsearch の技術エンジニアがプラグインをアップグレードできるよう、チケットを送信してください。変更を有効にするには、アップグレード後にクラスターを再起動してください。
-
rc4 より前のバージョンのプラグインでは、このエラーがトリガーされます。
-
aliyun-qos プラグインは、V6.7.0 以降を実行しているクラスターでアップグレードできます。それより前のバージョンを実行しているクラスターの場合は、まずクラスターを V6.7.0 以降にアップグレードしてください。
"NoNodeAvailableException" (Transport Client、ポート 9300)
Transport Client 5.5 または 5.6 を使用してポート 9300 経由で接続すると、次のようなエラーが表示されることがあります:
NoNodeAvailableException[None of the configured nodes are available: [{#transport#-1}{HVdK7Cff****_P0c9n****}{es-cn-v1qqweee****.elasticsearch.aliyuncs.com}{172.17.XX.XX:9300}]]
172.17.XX.XX の IP アドレスはクラスター内の実際のノードではありません。これは、これらのクライアントバージョンで確認されている既知の問題です。代わりに Transport Client 5.3.3 を使用してください。「Transport Client (5.x)」をご参照ください。
"Unclosed object or array found" / "ArrayIndexOutOfBoundsException" (V7.4)
これらのエラーは、オープンソースの Elasticsearch 7.4 のバグが原因であり、ビジネス運用には影響しません。このバグは 7.4 より後のバージョンで修正されています。
Alibaba Cloud Elasticsearch V7.4 は提供を終了しています。より新しいバージョンを実行するクラスターをご購入ください。切り替え前にデータ移行が必要な場合は、「データ移行ソリューションの選択」を参照して、ご利用のワークロードに適したアプローチを選択してください。
"No field found for [metaData] in mapping with types" (aliyun-knn)
このエラーは、aliyun-knn プラグインを使用して、コサイン距離測定関数で設定されたインデックスに対してベクトル検索を行う場合に表示されます。以下を確認してください:
-
クラスターバージョン: aliyun-knn プラグインには、カーネル V1.2 以降を搭載した Elasticsearch V6.7、またはカーネル V1.4 以降を搭載した Elasticsearch V7.10 が必要です。バージョンの要件については、「aliyun-knn プラグインの使用」をご参照ください。
-
スクリプトクエリメソッド: スクリプトクエリでは
script_scoreパラメーターを使用する必要があります。 -
フィールドのネスト: クエリで指定されたフィールドが、インデックスマッピングのネスト構造と一致していることを確認してください。インデックスがネストされたフィールドを使用している場合、クエリもそれに応じてネストされたフィールドを参照する必要があります。
"API keys not enabled in Elasticsearch"
クラスターで API キー認証が有効になっていません。API キーを使用するには、クラスターで HTTPS がアクティブになっている必要があります。これを解決するには、HTTPS を有効にしてください。「HTTPS の有効化」をご参照ください。