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

Elasticsearch 7.14移除映射类型后为何仍需PUT到含type的嵌套URI

问题原因说明

首先你对映射类型移除和API路径的对应关系存在误解,核心原因如下:

  • Elasticsearch 7.x版本只是移除了单索引下多类型共存的能力,并没有修改REST API的路径结构,文档写入的标准路径格式依然是三段结构:/{索引名}/_doc/{文档ID},其中_doc是7.x之后统一的默认唯一类型名,不需要自定义。
  • 你第一个请求PUT /products/1?pretty的路径只有两段,不符合文档写入的路径规则,Elasticsearch会把该请求解析为其他API的调用,因此返回405方法不允许的报错,和类型本身是否被移除无关。
正确的标准写法

不需要自定义类型名,直接在类型位填写默认的_doc即可:

curl -X PUT "localhost:9200/products/_doc/1?pretty" -H 'Content-Type: application/json' -d'
{
    "name": "Toast"
}
'
关于你第二个请求能成功的说明

你用PUT /pop/products/1?pretty能成功,是因为该路径刚好是三段结构,Elasticsearch将路径段分别解析为:索引名为pop,类型名为products,文档ID为1。
该场景能生效是因为你的集群开启了旧版本兼容配置,支持在7.x版本下自定义单个类型名,属于过渡兼容能力,并非官方标准用法,8.x及以上版本已经完全移除该兼容能力,必须统一使用_doc作为类型位的固定值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 16:48:01