通过查询上下文更新
编辑通过查询上下文更新编辑
在 通过查询更新 操作中使用 Painless 脚本,以添加、修改或删除查询结果集中每个文档内的字段。
变量
-
params
(Map
,只读) - 作为查询的一部分传入的用户定义参数。
-
ctx['op']
(String
) - 操作的名称。
-
ctx['_routing']
(String
,只读) - 用于选择文档存储分片的的值。
-
ctx['_index']
(String
,只读) - 索引的名称。
-
ctx['_id']
(String
,只读) - 唯一的文档 ID。
-
ctx['_version']
(int
,只读) - 文档的当前版本。
-
ctx['_source']
(Map
) - 包含存储在文档中的字段的
Map
和List
结构中的提取 JSON。
副作用
-
ctx['op']
- 使用默认的
index
来更新文档。设置为none
表示不执行任何操作,设置为delete
表示从索引中删除当前文档。 -
ctx['_source']
- 修改
Map/List
结构中的值,以添加、修改或删除文档的字段。
返回值
-
void
- 没有预期的返回值。
API
标准的 Painless API 可用。
示例
要运行此示例,请先按照 上下文示例 中的步骤操作。
以下查询查找特定区域中所有未售出的座位,并将价格降低 2 元。
POST /seats/_update_by_query { "query": { "bool": { "filter": [ { "range": { "row": { "lte": 3 } } }, { "match": { "sold": false } } ] } }, "script": { "source": "ctx._source.cost -= params.discount", "lang": "painless", "params": { "discount": 2 } } }