Watcher 脚本负载转换

编辑

一个负载转换,它在 Watch 执行上下文中对当前负载执行脚本,并将其替换为新生成的负载。以下代码片段展示了如何在 Watch 级别定义一个简单的脚本负载转换

当与 search 负载转换结合使用时,script 负载转换通常很有用,在这种情况下,脚本可以仅从搜索结果中提取重要数据,从而保持负载最小。这可以通过 chain 负载转换来实现。

{
  "transform" : {
    "script" : "return [ 'time' : ctx.trigger.scheduled_time ]" 
  }
}

一个简单的 painless 脚本,创建一个新的负载,其中包含一个保存调度时间的 time 字段。

执行的脚本可以返回一个有效的模型,该模型等效于 Java™ Map 或 JSON 对象(您需要查阅特定脚本语言的文档以了解此构造是什么)。返回的任何其他值都将被分配,并且可以/通过 _value 变量访问。

script 属性可以包含一个字符串值,在这种情况下,它将被视为内联脚本,并将采用默认的 Elasticsearch 脚本语言(如 脚本 中所述)。您可以使用 Elasticsearch 支持的其他脚本语言。为此,您需要将 script 字段设置为一个对象,该对象描述脚本及其语言。下表列出了可以配置的可能设置

表 91. 脚本负载转换设置

名称 必需 默认值 描述

inline

-

当使用内联脚本时,此字段包含脚本本身。

id

-

当引用存储的脚本时,此字段包含脚本的 ID。

lang

painless

脚本语言

params

-

脚本可以访问的其他参数/变量

当使用脚本的对象表示法时,必须定义 inlineid 字段中的一个(且只有一个)。

除了提供的 params 之外,脚本还可以访问标准 Watch 执行上下文参数