向ElasticSearch 8.6 POST数据时遇“no handler found”错误求助
解决Elasticsearch 8+ POST数据报错问题
错误原因
你遇到的no handler found for uri错误,是因为Elasticsearch 8+已完全移除文档类型(_type),不能在索引名后直接添加newdocname这类自定义内容作为路径,必须使用官方规定的文档操作端点。
正确的CURL命令
根据需求,有两种常见的正确写法:
1. 让Elasticsearch自动生成文档ID
使用/_doc端点发起POST请求,ES会自动为新文档生成唯一ID:
curl -v -X POST http://66-228-66-111.ip.linodeusercontent.com:9200/datastream2/_doc -H "Content-type: application/json" --user elastic:u34XXXc2qYNGnVS4XXXA -d '{"UA":"Mozilla","acclang":"eng"}'
2. 自定义文档ID(如用newdocname作为ID)
如果需要指定文档ID,有两种方式:
- PUT请求:ID存在时更新文档,不存在时创建文档
curl -v -X PUT http://66-228-66-111.ip.linodeusercontent.com:9200/datastream2/_doc/newdocname -H "Content-type: application/json" --user elastic:u34XXXc2qYNGnVS4XXXA -d '{"UA":"Mozilla","acclang":"eng"}'
- POST +
/_create端点:仅当ID不存在时创建文档,若ID已存在则返回报错(适合避免覆盖已有数据的场景)
curl -v -X POST http://66-228-66-111.ip.linodeusercontent.com:9200/datastream2/_create/newdocname -H "Content-type: application/json" --user elastic:u34XXXc2qYNGnVS4XXXA -d '{"UA":"Mozilla","acclang":"eng"}'
补充说明
Elasticsearch 7.x开始逐步废弃文档类型,8.x彻底移除该概念,所有文档操作必须通过/_doc或/_create这类标准端点完成,不能再沿用旧版本指定类型的写法。
内容的提问来源于stack exchange,提问作者Another Mike
相关产品推荐
相关产品推荐

