除了创建和替换文档,我们也可以更新文档。需要注意的是Elasticsearch在底层并不会整的更新文档。当我们执行更新操作的时候,Elasticsearch会一次性完成先删除,再新建一个文档。
下面的例子示意了如何将我们之前索引的ID为1的文档的name字段修改为“Jane Doe”:

POST /customer/external/1/_update?pretty
{
"doc": { "name": "Jane Doe" }
}

下面的例子示意了如何将我们之前索引的ID为1的文档的name字段修改为“Jane Doe”,并且新增一个age字段:

POST /customer/external/1/_update?pretty
{
"doc": { "name": "Jane Doe", "age": 20 }
}

我们也可以使用简单的额脚本来执行更新操作。下面的例子使用脚本将age的值加5:

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

上面示例中的ctx._source引用的是当前要被更新的文档。

需要注意的是使用这个写法,我们一次只能更新一个文档。在未来,Elasticsearch可能会提供根据查询条件更新多个文档的能力。(就像SQL中的UDPATE -WHERE语句)

 

 


本文系本人根据官方文档的翻译,能力有限、水平一般,如果对想学习Elasticsearch的朋友有帮助,将是本人的莫大荣幸。

https://www.elastic.co/guide/en/elasticsearch/reference/current/_updating_documents.html

 posted on 2017-04-27 12:02  段子手6哥  阅读(207)  评论(0编辑  收藏  举报