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

133

Ich hatte ElasticSearch 5.2 und habe gerade ein Upgrade auf 6.0 durchgeführt.

Ich versuche , eine Index - Vorlage folgende Anleitung erstellen hier , bekam aber Fehler

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

Meine Anfrage ist

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

Antworten:

242

Um dies zu beheben, fügen Sie die Curl-Option hinzu -H 'Content-Type: application/json'


Dieser Fehler ist auf die in ElasticSearch 6.0 eingeführte strikte Überprüfung des Inhaltstyps zurückzuführen , wie in diesem Beitrag erläutert

Ab Elasticsearch 6.0 müssen alle REST-Anforderungen, die einen Body enthalten, auch den richtigen Inhaltstyp für diesen Body bereitstellen.

kgf3JfUtW
quelle
Hallo @sam, gibt es eine dauerhafte Lösung, damit ich dieses Flag nicht für jede Anfrage geben muss?
Rupesh
1
@sam danke sam, aber wenn ich die Curl-Option hinzufüge, erhalte ich {"Fehler": "Content-Type-Header [application / x-www-form-urlencoded] wird nicht unterstützt", "status": 406} curl: (6) Host konnte nicht aufgelöst werden: Anwendung
Haneul Kim
2
@haneulkim Wenn Sie Curl unter Windows ausführen, müssen Sie ein doppeltes Anführungszeichen anstelle eines einfachen Anführungszeichens verwenden. Hier ist ein Beispiel für einen Curl-Befehl unter Windows: curl -X PUT "localhost: 9200 / customer / _doc / 1? Pretty" -H "Inhaltstyp: application / json" -d "{\" name \ ": \" John Doe "}"
Kevin Le
11

Die Lösung besteht darin, einen Content-Type: application/jsonHeader hinzuzufügen

curl -XPUT 'localhost:9200/_template/template_1' \
  -H 'Content-Type: application/json' \
  -d '**your query**'
Z.LI
quelle
-1
"{ \"name\": { \"first\": {} }, \"address\": [ { \"address1\":\"lane\" } ] } "

Wenn Sie in Windows JSON als Parameter angeben, verwenden Sie nur doppelte Anführungszeichen. Verwenden Sie ein Escape-Zeichen.

charlie9526
quelle