zan*_*ona 5 put updates nosql elasticsearch
弹性搜索是否有任何方法可以完全(非部分)更新文档而不创建新文档以防它们尚不存在?
到目前为止,我发现该_update
方法在传递doc
json请求体内的属性以部分更新文档的同时,我想在这种情况下替换整个文档,而不仅仅是部分更新.
我还发现,index
发送PUT
请求的方法工作正常,尽管在id
尚未编制索引的情况下创建新文档.
将op_type
参数设置为create
强制文档创建而不是更新.我想知道是否有任何方法可以始终执行update
而不是create
新的执行?
或者是否有另一种方法可以让我实现这样的任务?
如果我理解正确的话,您想要索引一个文档,但前提是它已经存在?就像一个op_type
选项update
?
假设您的映射保持一致,您主要可以使用更新 API 来完成此操作。使用_update
,如果文档不存在,您将返回一个404
. 如果确实存在,ES会合并doc
与那里存在的任何文档合并。如果您确保发送的新文档包含映射中的所有字段,那么您实际上是在彻底替换它。
但请注意,您可以在不合并文档的情况下在两个请求中相当有效地完成此操作;第一个通过请求检查文档是否存在HEAD
。如果HEAD /idx/type/id
成功,则执行PUT
. 这本质上是更新 API 内部发生的事情,但有一点额外的开销。但HEAD
它确实很便宜,因为它不会移动任何有效负载。它只是返回 HTTP 200/404。
归档时间: |
|
查看次数: |
537 次 |
最近记录: |