除了能够索引和替换文档之外,我们还可以更新文档。请注意,Elasticsearch实际上并未在后台进行就地更新。每当我们进行更新时,Elasticsearch都会删除旧文档,然后将更新的新文档编入索引。
本示例展示如何更改文档(ID为1)的name字段:
POST /customer/_doc/1/_update?pretty
{
"doc": { "name": "Jane Doe" }
}
本示例展示如何更改文档(ID为1)的name字段并添加age字段:
POST /customer/_doc/1/_update?pretty
{
"doc": { "name": "Jane Doe", "age": 20 }
}
也可以使用简单的脚本执行更新。本示例使用脚本将年龄增加5:
POST /customer/_doc/1/_update?pretty
{
"script" : "ctx._source.age += 5"
}
在上面的示例中,ctx._source
指的是将要更新的当前源文档。
Elasticsearch提供了在给定查询条件(例如一条SQL UPDATE-WHERE
语句)的情况下更新多个文档的功能。见docs-update-by-query
API