elasticsearch 为什么Kibana使用PUT拒绝幂等更新操作,elasticsearch,kibana,elasticsearch,Kibana" /> elasticsearch 为什么Kibana使用PUT拒绝幂等更新操作,elasticsearch,kibana,elasticsearch,Kibana" />

elasticsearch 为什么Kibana使用PUT拒绝幂等更新操作

elasticsearch 为什么Kibana使用PUT拒绝幂等更新操作,elasticsearch,kibana,elasticsearch,Kibana,最近,我使用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

最近,我使用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。

取决于您如何阅读HTTP的语义,PUT将完全替换资源,并且您需要一个
补丁来更新(Elasticsearch不支持)。另外,
\u update
端点将接受
doc
script
,后者不一定是幂等的-例如,执行脚本化的upsert


通常,Elasticsearch尽可能使用RESTful,但在需要时会做出务实的选择。

原因很简单,因为ES update API需要POST。他们就是这样决定实施的。