更新文档

除了可以索引和替换文档之外,我们也可以更新文档。但是注意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语句)。

results matching ""

    No results matching ""