Content-Type başlığı [application / x-www-form-urlencoded], Elasticsearch'te desteklenmiyor


135

ElasticSearch 5.2 kullanıyordum ve 6.0'a yükselttim.

Buradaki kılavuzu takip eden bir dizin şablonu oluşturmaya çalışıyorum , ancak hata aldım

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

Benim sorgum

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

Yanıtlar:


244

Bunu düzeltmek için curl seçeneği ekleyin -H 'Content-Type: application/json'


Bu hata, bu yayında açıklandığı gibi ElasticSearch 6.0'da tanıtılan katı içerik türü denetiminden kaynaklanmaktadır.

Elasticsearch 6.0'dan başlayarak, bir gövde içeren tüm REST istekleri de o gövde için doğru içerik türünü sağlamalıdır.


Merhaba @sam, Her istek için bu bayrağı vermek zorunda kalmamam için kalıcı bir çözüm var mı?
Rupesh

1
@sam, teşekkürler sam, ancak curl seçeneğini eklediğimde bana {"error": "Content-Type header [application / x-www-form-urlencoded] desteklenmiyor", "status": 406} curl: (6) veriyor Ana bilgisayar
çözülemedi

2
@haneulkim Windows üzerinde curl çalıştırıyorsanız, tek tırnak yerine çift tırnak kullanmalısınız. Windows'ta örnek curl komutu: curl -X PUT "localhost: 9200 / customer / _doc / 1? Pretty" -H "Content-Type: application / json" -d "{\" name \ ": \" John Doe \ "}"
Kevin Le,

11

Çözüm, Content-Type: application/jsonbaşlık eklemektir

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

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

Windows'ta, parametre olarak JSON verdiğinizde, yalnızca çift tırnak kullanın. Çıkış karakterini kullanın.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.