Elasticsearch文档索引报错求助:Content-Type不支持及URL格式问题
问题分析与解决方法
问题根源
- 请求头参数格式错误:原命令中直接把
'Content-Type: application/json'作为普通参数传递,curl会将其识别为URL的一部分,触发URL using bad/illegal format错误。正确的HTTP请求头必须用-H(或--header)参数指定。 - Content-Type未生效:因为请求头设置错误,Elasticsearch收到的请求默认使用
application/x-www-form-urlencoded格式,而Elasticsearch不支持该格式处理索引请求,因此返回406错误。
正确的索引命令
修正请求头参数后的curl命令如下:
curl -u USER:Password https://localhost:9200/my_index/_doc -XPOST -k -H 'Content-Type: application/json' -d '{ "title": "One", "tags": ["ruby"] }'
额外注意事项
- 若使用Windows cmd终端,需将单引号替换成双引号,同时转义JSON内容里的双引号:
curl -u USER:Password https://localhost:9200/my_index/_doc -XPOST -k -H "Content-Type: application/json" -d "{ \"title\": \"One\", \"tags\": [\"ruby\"] }"
- 替换命令中的
USER和Password为你的Elasticsearch实际账号密码。 -k参数用于忽略SSL证书验证,仅适合本地测试环境,生产环境建议配置合法证书后移除该参数。
内容的提问来源于stack exchange,提问作者Ankit Raj
相关产品推荐
相关产品推荐

