Skip to content

Latest commit

 

History

History
35 lines (25 loc) · 1.44 KB

updating_documents.md

File metadata and controls

35 lines (25 loc) · 1.44 KB

更新文档

除了可以更新和替换一个文档外,还可以更新文档。需要注意的是,在 Elasticsearch 内部,它实际上并没有去真的更新文档,而是先删除文档,再索引一个新文档。

这个例子会展示如何更新之前的文档(ID为1)的 name 字段为 "Jane Doe":

curl -XPOST 'localhost:9200/customer/external/1/_update?pretty' -d '
{
  "doc": { "name": "Jane Doe" }
}'

接着下面这个例子会展示如何把之前的文档(ID为1)的name 字段修改为 "Jane Doe" 并且再添加一个age字段:

curl -XPOST 'localhost:9200/customer/external/1/_update?pretty' -d '
{
  "doc": { "name": "Jane Doe", "age": 20 }
}'

文档更新也可以通过简单的脚本来实现。主要注意的是,像下面这种动态脚本(dynamic scripts)在1.4.3这个版本中是默认关闭的,从这个地方scripting docs可以了解更多细节。下面的例子使用脚本给年龄值加 5:

curl -XPOST 'localhost:9200/customer/external/1/_update?pretty' -d '
{
  "script" : "ctx._source.age += 5"
}'

在上面的例子中,ctx._source 表明当前的源文档被更新。

这种写法需要注意的是,更新只会作用于单个文档,在未来,Elasticsearch 可能会提供更具查询条件更新多个文档的功能(就像SQLupdate where语句)。