Watcher 搜索输入
编辑Watcher 搜索输入编辑
使用 search
输入可以在触发监视器时将 Elasticsearch 搜索请求的结果加载到执行上下文中。有关所有支持的属性,请参阅 搜索输入属性。
在搜索输入的 request
对象中,您需要指定
- 您要搜索的索引
- 搜索类型
- 搜索请求正文
搜索请求正文支持完整的 Elasticsearch 查询 DSL,它与 Elasticsearch _search
请求的正文相同。
例如,以下输入从 logs
索引中检索所有 event
文档
"input" : { "search" : { "request" : { "indices" : [ "logs" ], "body" : { "query" : { "match_all" : {}} } } } }
您可以在指定索引时使用日期数学和通配符。例如,以下输入从今天的每日报价索引中加载最新的 VIXZ 报价
{ "input" : { "search" : { "request" : { "indices" : [ "<stock-quotes-{now/d}>" ], "body" : { "size" : 1, "sort" : { "timestamp" : { "order" : "desc"} }, "query" : { "term" : { "symbol" : "vix"} } } } } } }
提取特定字段编辑
您可以使用 extract
属性指定要将搜索响应中的哪些字段加载到监视器负载中。当搜索生成大量响应并且您只对特定字段感兴趣时,这非常有用。
例如,以下输入仅将匹配结果总数加载到监视器负载中
"input": { "search": { "request": { "indices": [ ".watcher-history*" ] }, "extract": [ "hits.total.value" ] } },
使用模板编辑
search
输入支持 搜索模板。例如,以下代码段引用了名为 my_template
的索引模板,并传递值 23 来填充模板的 value
参数
{ "input" : { "search" : { "request" : { "indices" : [ "logs" ], "template" : { "id" : "my_template", "params" : { "value" : 23 } } } } } ... }
应用条件编辑
search
输入通常与 script
条件结合使用。例如,以下代码段添加了一个条件,用于检查搜索返回的结果是否超过五个
{ "input" : { "search" : { "request" : { "indices" : [ "logs" ], "body" : { "query" : { "match_all" : {} } } } } }, "condition" : { "compare" : { "ctx.payload.hits.total" : { "gt" : 5 }} } ... }
访问搜索结果编辑
条件、转换和操作可以通过监视器执行上下文访问搜索结果。例如
- 要将所有搜索结果加载到电子邮件正文中,请使用
ctx.payload.hits
。 - 要引用匹配结果总数,请使用
ctx.payload.hits.total
。 - 要访问特定结果,请使用其从零开始的数组索引。例如,要获取第三个结果,请使用
ctx.payload.hits.hits.2
。 - 要从特定结果中获取字段值,请使用
ctx.payload.hits.hits.<index>.fields.<fieldname>
。例如,要从第一个结果中获取 message 字段,请使用ctx.payload.hits.hits.0.fields.message
。
搜索响应中的匹配结果总数作为响应中的一个对象返回。它包含一个 value
(匹配结果数)和一个 relation
,指示该值是准确的 ("eq"
) 还是匹配查询的总结果的下限 ("gte"
)。您可以在搜索请求中将 track_total_hits
设置为 true,以告诉 Elasticsearch 始终准确跟踪匹配结果数。
搜索输入属性编辑
名称 | 必需 | 默认值 | 描述 |
---|---|---|---|
|
否 |
|
要执行的 类型 的搜索请求。有效值为: |
|
否 |
- |
要搜索的索引。如果省略,则搜索所有索引,这是 Elasticsearch 中的默认行为。 |
|
否 |
- |
请求的正文。请求正文 遵循您通常在 REST |
|
否 |
- |
搜索模板的正文。有关更多信息,请参阅 配置模板。 |
|
否 |
|
如何展开通配符。有效值为: |
|
否 |
|
搜索是否应忽略不可用的索引。有关更多信息,请参阅 |
|
否 |
|
是否允许在通配符索引表达式不产生具体索引的情况下进行搜索。有关更多信息,请参阅 allow_no_indices。 |
|
否 |
- |
要从搜索响应中提取并作为负载加载的 JSON 键数组。当搜索生成大量响应时,您可以使用 |
|
否 |
1m |
等待搜索 API 调用返回的超时时间。如果在此时间内没有返回响应,则搜索输入超时并失败。此设置会覆盖默认的搜索操作超时时间。 |
在指定请求 body
时,您可以在执行上下文中引用以下变量
名称 | 描述 |
---|---|
|
当前正在执行的监视器的 ID。 |
|
此监视器开始执行的时间。 |
|
触发此监视器的时间。 |
|
此监视器应该被触发的时间。 |
|
与此监视器关联的任何元数据。 |