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

Elasticsearch索引文档报错「类型名[_doc]不能以'_'开头」如何解决

报错原因及解决方案

报错原因

  1. 版本兼容性问题:你所使用的Elasticsearch版本低于7.0。ES 7.0版本正式废弃了索引多类型(Type)设计,将_doc作为统一的无类型占位符;而7.0之前的版本允许用户自定义类型,且强制要求类型名称不能以下划线开头,直接使用_doc作为类型名就会触发invalid_type_name_exception报错。
  2. 请求路径错误:你第二次执行的PUT请求没有在路径中指定目标索引名a1,ES无法匹配到对应的请求处理逻辑,因此返回No handler found for uri报错。

解决方案

方案一:适配当前低版本Elasticsearch(适用于6.x及更早版本)

自定义一个不含下划线前缀的合法类型名(例如doc、data等),同时补全请求路径中的索引名即可:

  • 自动生成ID的POST写入命令:
curl -XPOST "http://localhost:41349/a1/doc" -H "Content-Type:application/json" -d '{"dummy": "data"}'
  • 指定文档ID的PUT写入命令:
curl -XPUT --header 'Content-Type: application/json' http://localhost:41349/a1/doc/1 -d '{
"school" : "Harvard"
}'

方案二:升级Elasticsearch到7.0及以上版本

升级完成后,_doc为官方默认的类型占位符,仅需要修正PUT请求的路径,补全索引名即可正常运行:

  • 自动生成ID的POST写入命令:
curl -XPOST "http://localhost:41349/a1/_doc" -H "Content-Type:application/json" -d '{"dummy": "data"}'
  • 指定文档ID的PUT写入命令:
curl -XPUT --header 'Content-Type: application/json' http://localhost:41349/a1/_doc/1 -d '{
"school" : "Harvard"
}'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 00:54:03