通过查询上下文更新编辑

通过查询更新 操作中使用 Painless 脚本,以添加、修改或删除查询结果集中每个文档内的字段。

变量

params (Map,只读)
作为查询的一部分传入的用户定义参数。
ctx['op'] (String)
操作的名称。
ctx['_routing'] (String,只读)
用于选择文档存储分片的的值。
ctx['_index'] (String,只读)
索引的名称。
ctx['_id'] (String,只读)
唯一的文档 ID。
ctx['_version'] (int,只读)
文档的当前版本。
ctx['_source'] (Map)
包含存储在文档中的字段的 MapList 结构中的提取 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
    }
  }
}