按查询上下文更新
编辑按查询上下文更新
编辑在 按查询更新 操作中使用 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 } } }