更新文档

除了能索引和替换文档,我们也可以更新文档。不过,请注意Elasticsearch实际上并没有做覆盖更新。每当我们做一个更新,Elasticsearch删除旧文件,然后用索引一次性应用到它更新一个新的文档中。

这个例子说明如何通过更改名称字段为“Jane Doe”,以更新我们以前的文档(ID为1):


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

这个例子说明如何通过更改名称字段为“Jane Doe”,并在同一时间添加一个年龄字段到我们以前的文档中(ID为1):


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

更新还可以通过使用简单的脚本执行。需要注意的是像下面这样的动态脚本的默认情况下在1.4.3是禁用的,查看该脚本文档更多细节。本例中使用脚本使年龄增加5岁:


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

在上面的例子中,当前文档的ctx._source将要被更新。

请注意,在撰写本文时,更新只能在一个单一的文件在同一时间进行。在未来,Elasticsearch可能提供更新给定查询条件的文档的能力(像SQL UPDATE-WHERE语句一样)。

results matching ""

    No results matching ""