Nagłówek Content-Type [application / x-www-form-urlencoded] nie jest obsługiwany w Elasticsearch

146

Kiedyś miałem ElasticSearch 5.2 i właśnie zaktualizowałem do 6.0.

Próbuję utworzyć szablon indeksu zgodnie z przewodnikiem tutaj , ale wystąpił błąd

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

Moje pytanie brzmi

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

Odpowiedzi:

256

Aby to naprawić, dodaj opcję curl -H 'Content-Type: application/json'


Ten błąd wynika ze ścisłego sprawdzania typu zawartości wprowadzonego w ElasticSearch 6.0, jak wyjaśniono w tym poście

Począwszy od Elasticsearch 6.0, wszystkie żądania REST, które zawierają treść, muszą również zawierać poprawny typ zawartości dla tej treści.

kgf3JfUtW
źródło
Cześć @sam, czy jest jakieś trwałe rozwiązanie, abym nie musiał podawać tej flagi przy każdym żądaniu.
Rupesh
2
@sam dziękuje sam, ale kiedy dodam opcję curl, otrzymuję {"error": "Nagłówek Content-Type [application / x-www-form-urlencoded] nie jest obsługiwany", "status": 406} curl: (6) Nie można rozwiązać hosta: aplikacja
haneul kim
3
@haneulkim Jeśli uruchamiasz curl w systemie Windows, musisz użyć podwójnego cudzysłowu zamiast pojedynczego cudzysłowu. Oto przykładowe polecenie curl w systemie Windows: curl -X PUT "localhost: 9200 / customer / _doc / 1? Pretty" -H "Content-Type: application / json" -d "{\" name \ ": \" John Doe \ "}"
Kevin Le
14

Rozwiązaniem jest dodanie Content-Type: application/jsonnagłówka

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

W systemie Windows, podając JSON jako parametr, używaj tylko podwójnych cudzysłowów. Użyj znaku ucieczki.

charlie9526
źródło
Dzięki, to było naprawdę pomocne
zatrzymaj