更新文档
除了可以索引和替换文档之外,我们也可以更新文档。但是注意Elasticsearch 实际上没有真正的去更新文档。每当我们做更新操作的时候,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 }
}'
也可以使用简单的脚本来执行更新。注意像下面的动态脚本在1.4.3版本是不可用的,可以查看 scripting docs 获取更多细节。下面这个示例使用了脚本来增加age:
curl -XPOST 'localhost:9200/customer/external/1/_update?pretty' -d '
{
"script" : "ctx._source.age += 5"
}'
在上面的示例中,ctx._source 指向当前被更新的源文档,
注意,使用这种写法,一次只能对一个单独的节点执行更新操作。在将来,Elasticsearch 可能会提供更新多个文档的能力(像一个SQL UPDATE-WHERE语句)。