首页 > 解决方案 > 为什么 Kibana 拒绝使用 PUT 的幂等更新操作

问题描述

最近我使用 Kibana 控制台更新 ElasticSearch 中现有文档的字段,我在使用 PUT 方法时看到了这个错误,这让我很困惑。

{
  "error": "Incorrect HTTP method for uri [/product/_doc/1/_update] and method [PUT], allowed: [POST]",
  "status": 405
}

我使用的查询是

PUT /product/_doc/1/_update
{
  "doc": {"price": 95, "tags": ["Elasticsearch"]}
}

我认为应该是幂等的。有人可以帮我理解为什么这里只能使用 POST 方法吗?我的想法是 PUT 方法是幂等操作,所以对我来说,PUT 应该是唯一的候选者,而不是 POST。

标签: elasticsearchkibana

解决方案


根据您阅读 HTTP 语义的方式, aPUT将完全替换资源,并且您需要 aPATCH进行更新(Elasticsearch 不支持此功能)。此外,_update端点将要么接受,doc要么script后一个不一定是幂等的——例如执行脚本 upsert。

一般来说,Elasticsearch 尽可能地 RESTful,但会在需要时做出务实的选择。


推荐阅读