最近我使用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。
答案 0 :(得分:0)
根据您阅读HTTP语义的方式,PUT
将完全替换资源,并且您需要PATCH
进行更新(Elasticsearch不支持)。同样,_update
端点将接受doc
或script
,而后一个端点不一定是幂等的,例如进行脚本化的upsert。
通常,Elasticsearch尽可能使用RESTful,但会在需要时做出务实的选择。