Elasticsearch不支持Content-Type标头[application / x-www-form-urlencoded]


133

我曾经有ElasticSearch 5.2,并且刚升级到6.0。

我正在尝试按照此处的指南创建索引模板,但出现错误

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

我的查询是

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

Answers:


242

要解决此问题,请添加curl选项 -H 'Content-Type: application/json'


此错误是由于ElasticSearch 6.0中引入的严格的内容类型检查所致,如博文中所述

从Elasticsearch 6.0开始,所有包含主体的REST请求还必须为该主体提供正确的内容类型。


嗨,@ sam,是否有任何永久解决方案,这样我就不必为每个请求都提供此标志。
Rupesh

1
@sam谢谢sam,但是当我添加curl选项时,它给了我{“错误”:“不支持Content-Type标头[应用程序/ x-www-form-urlencoded]”,“状态”:406}卷曲:(6)无法解析主机:应用程序
haneul kim

2
@haneulkim如果在Windows上运行curl,则需要使用双引号而不是单引号。这是Windows上的curl命令示例:curl -X PUT“ localhost:9200 / customer / _doc / 1?pretty” -H“ Content-Type:application / json” -d“ {\” name \“:\” John Doe \“}”
Kevin Le

11

解决方法是添加Content-Type: application/json标题

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

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

在Windows中,当您将JSON作为参数时,请仅使用双引号。使用转义符。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.