web-dev-qa-db-ja.com

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

Elasticsearch(バージョン5.5)をGitlabに統合し、使用しようとしています。これは、外部のWindowsクライアントから送信するコマンドです。

curl -XGET gitlab.server:9200/ -H 'Content-Type: application/json' -d '{"query": {"simple_query_string" : {"fields" : ["content"], "query" : "foo bar -baz"}}}'

しかし、それは機能しません。クライアントでこれらのエラーが表示されます:

{「エラー」:「Content-Typeヘッダー[application/x-www-form-urlencoded]はサポートされていません」、「ステータス」:406}
カール:(6)ホストを解決できませんでした:テキスト
curl:(3)[globing]列1の一致しないブレース
カール:(3)不正なURL、コロンが最初の文字
curl:(3)[globing]列1の一致しないブレース
カール:(3)不正なURL、コロンが最初の文字
curl:(3)[globing]列2の範囲が間違っています
カール:(6)ホストを解決できませんでした:クエリ
カール:(3)不正なURL、コロンが最初の文字
カール:(3)[globing]列13の不一致の閉じ括弧/ブラケット

/var/log/elasticsearch/elasticsearch.logのサーバーでは、ログメッセージは表示されません。

ただし、Linuxサーバーから上記とまったく同じコマンドを実行すると、エラーなしで応答が返されます。

{
  "name" : "name",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "uuid",
  "version" : {
    "number" : "5.5.0",
    "build_hash" : "260387d",
    "build_date" : "2017-06-30T23:16:05.735Z",
    "build_snapshot" : false,
    "lucene_version" : "6.6.0"
  },
  "tagline" : "You Know, for Search"
}

http.content_type.required: trueをelasticsearch.ymlに追加しようとしましたが、問題は同じでした。だから、私はここで間違っていますか? Windowsクライアントから「サポートされていないContent-Typeヘッダー」を取得するのはなぜですか?どうすれば解決できますか?

次のように「」を「」に変更した後:

curl -XGET gitlab.server:9200/ -H "Content-Type: application/json" -d "{"query": {"simple_query_string" : {"fields" : ["content"], "query" : "foo bar -baz"}}}"

私はこの応答を受け取ります:

{
  "name" : "name",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "uuid",
  "version" : {
    "number" : "5.5.0",
    "build_hash" : "260387d",
    "build_date" : "2017-06-30T23:16:05.735Z",
    "build_snapshot" : false,
    "lucene_version" : "6.6.0"
  },
  "tagline" : "You Know, for Search"
}
curl: (6) Could not resolve Host: bar
9
waka

囲む引用符を'から"に変更した後、パラメーター内で使用される引用符"を次のようにエスケープします。

curl -XGET gitlab.server:9200/ -H "Content-Type: application/json" -d "{\"query\": {\"simple_query_string\" : {\"fields\" : [\"content\"], \"query\" : \"foo bar -baz\"}}}"

alternative は、jsonをファイルに入れ、パラメーターに@プレフィックスを使用することです。

json.txt

{
  "query": {
    "simple_query_string" : { 
      "fields" : ["content"], 
      "query" : "foo bar -baz"
    }
  }
}

以下のようにcurlを実行します。

curl -XGET gitlab.server:9200/ -H "Content-Type: application/json" -d @json.txt
21
Bless