更新文档

除了能够索引和替换文档,我们还可以更新文档。请注意,Elasticsearch实际上并没有在引擎盖下进行就地更新。每当我们进行更新时,Elasticsearch都会删除旧文档,然后一次性对应用了更新的新文档编制索引。

此示例显示如何通过将名称字段更改为“Jane Doe”来更新以前的文档(ID为1):

  1. POST /customer/_update/1?pretty
  2. {
  3. "doc": { "name": "Jane Doe" }
  4. }

此示例显示如何通过将名称字段更改为“Jane Doe”来更新我们以前的文档(ID为1),同时为其添加年龄字段:

  1. POST /customer/_update/1?pretty
  2. {
  3. "doc": { "name": "Jane Doe", "age": 20 }
  4. }

也可以使用简单脚本执行更新。此示例使用脚本将年龄增加5:

  1. POST /customer/_update/1?pretty
  2. {
  3. "script" : "ctx._source.age += 5"
  4. }

在上面的示例中,ctx._source指的是即将更新的当前源文档。

Elasticsearch提供了在给定查询条件(如SQL UPDATE-WHERE语句)的情况下更新多个文档的功能。请参阅docs-update-by-query API