在 Elasticsearch 上不支持 Content-Type 头[ application/x-www-form-urlencode ]

我以前用的是 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"
}
}
}
}
}'
108906 次浏览

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


这个错误是由于在 ElasticSearch 6.0中引入了 严格的内容类型检查,正如在 这篇文章中解释的那样

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

解决方案是添加 Content-Type: application/json

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

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