更新文档
编辑更新文档
编辑更新文档允许您完全替换现有文档的内容,或对某些字段执行部分更新(更改现有字段或添加新字段)。
部分文档更新
编辑如果您想部分更新文档(例如,更改现有字段或添加新字段),可以通过在 body
参数中指定 doc
来实现。这会将 doc
中的字段与现有文档合并。
$params = [ 'index' => 'my_index', 'id' => 'my_id', 'body' => [ 'doc' => [ 'new_field' => 'abc' ] ] ]; // Update doc at /my_index/_doc/my_id $response = $client->update($params);
脚本化文档更新
编辑有时您需要执行脚本化更新,例如递增计数器或将新值追加到数组。要执行脚本化更新,您需要提供一个脚本,通常还需要一组参数。
$params = [ 'index' => 'my_index', 'id' => 'my_id', 'body' => [ 'script' => 'ctx._source.counter += count', 'params' => [ 'count' => 4 ] ] ]; $response = $client->update($params);
Upserts
编辑Upserts 是“更新或插入”操作。这意味着 upsert 会尝试运行您的更新脚本,但如果文档不存在(或您尝试更新的字段不存在),则会改为插入默认值。
$params = [ 'index' => 'my_index', 'id' => 'my_id', 'body' => [ 'script' => [ 'source' => 'ctx._source.counter += params.count', 'params' => [ 'count' => 4 ], ], 'upsert' => [ 'counter' => 1 ], ] ]; $response = $client->update($params);