Content-Typeヘッダー[application / x-www-form-urlencoded]はElasticsearchではサポートされていません


133

以前はElasticSearch 5.2を使用していましたが、6.0にアップグレードしました。

ここのガイドに従ってインデックステンプレートを作成しようとしていますが、エラーが発生しました

Content-Type header [application/x-www-form-urlencoded] is not supported

私のクエリは

curl -X PUT localhost:9200/_template/template_1 -d '
{
  "index_patterns": ["te*", "bar*"],
  "mappings": {
    "type1": {
      "properties": {
        "host_name": {
          "type": "keyword"
        }
      }
    }
  }
}'

回答:


242

これを修正するには、curlオプションを追加します -H 'Content-Type: application/json'


このエラーは、この投稿で説明されているように、ElasticSearch 6.0で導入された厳密なコンテンツタイプチェックが原因です。

Elasticsearch 6.0以降、本文を含むすべてのRESTリクエストは、その本文の正しいコンテンツタイプも提供する必要があります。


こんにちは、@ sam永続的な解決策はありますか?そのため、リクエストごとにこのフラグを指定する必要はありません。
Rupesh

1
@samありがとうsamただし、curlオプションを追加すると、{"error": "Content-Type header [application / x-www-form-urlencoded] is not supported"、 "status":406} curl:(6)ホストを解決できませんでした:アプリケーション
ハヌルキム

2
@haneulkim Windowsでcurlを実行している場合は、一重引用符ではなく二重引用符を使用する必要があります。次に、Windowsでのcurlコマンドの例を示します。curl -X PUT "localhost:9200 / customer / _doc / 1?pretty" -H "Content-Type:application / json" -d "{\" name \ ":\" John Doe 「}」
Kevin Le

11

解決策はContent-Type: application/jsonヘッダーを追加することです

curl -XPUT 'localhost:9200/_template/template_1' \
  -H 'Content-Type: application/json' \
  -d '**your query**'

-1
"{ \"name\": { \"first\": {} }, \"address\": [ { \"address1\":\"lane\" } ] } "

Windowsでは、JSONをパラメーターとして指定する場合は、二重引用符のみを使用してください。エスケープ文字を使用します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.