6

upsert 的例子是:

curl -XPOST 'localhost:9200/test/type1/1/_update' -d '{
    "script" : "ctx._source.counter += count",
    "params" : {
        "count" : 4
    },
    "upsert" : {
        "counter" : 1
    }
}'

如果该文档以前不存在,则该方法有效。

假设我想更新一个不一定存在但文档存在的字段。例如,文档可能还没有计数器字段。

我该怎么做呢?

4

1 回答 1

13

您可以使用更新脚本来检查字段是否存在:

curl -XPOST 'localhost:9200/test/type1/1/_update' -d '{
    "script" : "if( ctx._source.containsKey(\"counter\") ){ ctx._source.counter += count; } else { ctx._source.counter = 1; }",
    "params" : {
        "count" : 4
    },
    "upsert" : {
        "counter" : 1
    }
}'
于 2013-04-12T10:16:27.223 回答