web-dev-qa-db-de.com

Content-Type-Header [application / x-www-form-urlencoded] wird nicht unterstützt

Ich habe Elasticsearch (Version 5.5) in Gitlab integriert und versuche es zu benutzen. Dies ist der Befehl, den ich von einem externen Windows-Client sende:

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

aber es geht nicht. Auf dem Client erhalte ich folgende Fehlermeldungen:

{"error": "Content-Type-Header [application/x-www-form-urlencoded] wird nicht unterstützt", "status": 406}
curl: (6) Host: Text konnte nicht aufgelöst werden
Locken: (3) Unübertroffene Klammer in Spalte 1
curl: (3) Ungültige URL, Doppelpunkt ist erstes Zeichen
Locken: (3) Unübertroffene Klammer in Spalte 1
curl: (3) Ungültige URL, Doppelpunkt ist erstes Zeichen
Curl: (3) [Globbing] Bad Range in Spalte 2
curl: (6) Host: Abfrage konnte nicht aufgelöst werden
curl: (3) Ungültige URL, Doppelpunkt ist erstes Zeichen
curl: (3) [globbing] unübertroffene enge Klammer/Klammer in Spalte 13

Auf dem Server in /var/log/elasticsearch/elasticsearch.log werden keine Protokollmeldungen angezeigt.

Wenn ich jedoch denselben exakten Befehl wie oben auf dem Linux-Server ausführe, erhalte ich eine fehlerfreie Antwort:

{
  "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"
}

Ich habe versucht, http.content_type.required: true an die elasticsearch.yml, aber das Problem war das gleiche. Also, was mache ich hier falsch? Warum erhalte ich vom Windows-Client einen "Content-Type-Header nicht unterstützt"? Wie kann ich das lösen?

Nach dem Ändern des "zu" wie folgt:

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

Ich erhalte diese Antwort:

{
  "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

Nach dem Ändern der Anführungszeichen von ' bis ", entkomme den Anführungszeichen " verwendet in den Parametern wie folgt:

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

Ein alternativ ist, den json in eine Datei zu setzen und den @ Präfix für die Parameter.

json.txt

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

und führen Sie die Locke wie folgt aus:

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