elasticsearch - 为什么 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。
解决方案
根据您阅读 HTTP 语义的方式, aPUT
将完全替换资源,并且您需要 aPATCH
进行更新(Elasticsearch 不支持此功能)。此外,_update
端点将要么接受,doc
要么script
后一个不一定是幂等的——例如执行脚本 upsert。
一般来说,Elasticsearch 尽可能地 RESTful,但会在需要时做出务实的选择。
推荐阅读
- javascript - 无法让 Twitter 与 firebaseUI web 一起使用
- ios - iOS 12 - IPA 大小显着减小
- python - 升级 Ipython 时出现问题(prompt_toolkit 不兼容)
- centos - gnome 禁用“以其他用户身份登录”链接
- php - 如何使用查询从 MySQL 数据库中删除 id
- ssl - 如何从不使用默认 WLAN 代理设置的 apk 捕获和解码 ssl 流量
- javascript - 如何使用ajax一起发送模态表单和普通表单
- database - 如何对该模式进行分类?
- tensorflow - 有谁知道如何关闭 tensorflow meta_optimizer.cc:334 中的 LOG(INFO) 信息
- multithreading - Perl 简单的网络服务器不能同时处理多个请求