You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Elastic Search故障:POST/PUT请求因Content-Type不支持报错

解决Elasticsearch POST/PUT请求的Content-Type报错问题

这个问题我之前也碰到过,其实根源很明确——Elasticsearch默认只接受application/json格式的请求体,而你的请求里自动带上了application/x-www-form-urlencoded的Content-Type头,这不符合它的要求,所以返回了406不支持的错误。

下面分几种常见场景给你解决方案:

1. 用curl命令发送请求的情况

你需要显式指定Content-Type为application/json,正确的请求写法应该是这样:

curl -X POST "http://你的ES地址:9200/bird/admin/1" -H "Content-Type: application/json" -d '{ "id":"1", "ity":"BSP" }'

注意两个关键点:

  • 必须加上-H "Content-Type: application/json"来指定请求格式
  • 请求体要用单引号包裹,避免shell解析JSON里的双引号出问题

2. 用Postman/Insomnia这类可视化工具的情况

操作起来更直观:

  • 切换到请求的「Headers」标签页
  • 添加一条头信息:键为Content-Type,值为application/json
  • 到「Body」标签页,选择「raw」格式,然后右侧下拉框选「JSON」,再粘贴你的请求体内容

3. 在代码里发送请求的情况

不管你用Python、Java还是其他语言,核心都是手动设置Content-Type头。举个Python requests库的例子:

import requests

url = "http://你的ES地址:9200/bird/admin/1"
payload = {"id": "1", "ity": "BSP"}
headers = {"Content-Type": "application/json"}

# 两种写法都可以:用json参数会自动帮你设置Content-Type
response = requests.post(url, json=payload, headers=headers)
# 或者手动序列化JSON:
# import json
# response = requests.post(url, data=json.dumps(payload), headers=headers)

另外补充一句:如果是PUT请求更新文档,同样要遵循这个规则,确保请求头的Content-Type正确设置。

内容的提问来源于stack exchange,提问作者Gopesh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 03:51:46