6

アップサートの例は次のとおりです。

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 に答える