如何在搜索中或仪表板中的其他地方转换数组
How do I transform array in search or elsewhere in dashboard
我的搜索工作正常
index=event_db environment=prod release = 2020150015
| timechart count as Events
但是,我想修改它以搜索一系列版本中的任何版本。我知道“in”运算符。
要注意的是,我提供的一系列版本(“版本”)的格式略有不同,如下所示:
[ver2020.15.0015, ver2020.15.0016, ver2020.22.0019] // in general, many more than 3!
有没有办法使用 in 运算符和一些映射来获取
发布时间
[2020150015, 2020150016, 2020220019] ?
这个可以放在搜索中吗?
这是面板的一部分,所以如果它更简单,我可以在其他地方使用代码将 [ver2020.15.0015, ver2020.15.0016, ver2020.22.0019]
转换为 [2020150015, 2020150016, 2020220019]
但是,如前所述,我是新手,所以我对在哪里放置代码来转换数组的知识有限:)
我有一个字段集部分和一个包含查询的面板。
“版本”数组在字段集部分中的填充如下:
<input type="text" token="Releases">
<label>Release or Releases</label>
<default>*</default>
</input>
用户输入 ver2020.15.0015 或者 ver2020.15.*.
我不能只让用户输入 2020150015,因为别处使用的是 ver2020.15.0015 格式。
也许有一种方法可以在获取此字段后立即创建新字段Releases_Alt
?
让我知道我可以提供的任何其他信息。正如我所说,我是 Splunk 的新手,所以我仍在为术语而苦苦挣扎。
试试这个查询。它使用子搜索来构建 IN
参数。 Splunk 中的子搜索 运行 在主搜索之前,子搜索的输出替换了子搜索本身。
index=event_db environment=prod release IN (
[ | makeresults
| eval Releases=replace ($Releases|s$, "[ver\.]+","")
| return $Releases ] )
| timechart count as Events
makeresults
命令在那里,因为即使是子搜索也必须从生成命令开始。 makeresults
创建一个允许其他命令工作的“虚拟”事件。
eval
命令完成将发布版本转换为所需格式的工作。请注意将 |s
与 Releases 令牌一起使用。此构造确保令牌的内容包含在引号中,这是 replace
函数所期望的。
最后,return
命令带有 $
returns eval
的结果,但没有字段名称本身。没有它,子搜索将 return releases="2020150015, 2020150016, 2020220019"
,这是行不通的。
我的搜索工作正常
index=event_db environment=prod release = 2020150015
| timechart count as Events
但是,我想修改它以搜索一系列版本中的任何版本。我知道“in”运算符。
要注意的是,我提供的一系列版本(“版本”)的格式略有不同,如下所示:
[ver2020.15.0015, ver2020.15.0016, ver2020.22.0019] // in general, many more than 3!
有没有办法使用 in 运算符和一些映射来获取 发布时间
[2020150015, 2020150016, 2020220019] ?
这个可以放在搜索中吗?
这是面板的一部分,所以如果它更简单,我可以在其他地方使用代码将 [ver2020.15.0015, ver2020.15.0016, ver2020.22.0019]
转换为 [2020150015, 2020150016, 2020220019]
但是,如前所述,我是新手,所以我对在哪里放置代码来转换数组的知识有限:)
我有一个字段集部分和一个包含查询的面板。
“版本”数组在字段集部分中的填充如下:
<input type="text" token="Releases">
<label>Release or Releases</label>
<default>*</default>
</input>
用户输入 ver2020.15.0015 或者 ver2020.15.*.
我不能只让用户输入 2020150015,因为别处使用的是 ver2020.15.0015 格式。
也许有一种方法可以在获取此字段后立即创建新字段Releases_Alt
?
让我知道我可以提供的任何其他信息。正如我所说,我是 Splunk 的新手,所以我仍在为术语而苦苦挣扎。
试试这个查询。它使用子搜索来构建 IN
参数。 Splunk 中的子搜索 运行 在主搜索之前,子搜索的输出替换了子搜索本身。
index=event_db environment=prod release IN (
[ | makeresults
| eval Releases=replace ($Releases|s$, "[ver\.]+","")
| return $Releases ] )
| timechart count as Events
makeresults
命令在那里,因为即使是子搜索也必须从生成命令开始。 makeresults
创建一个允许其他命令工作的“虚拟”事件。
eval
命令完成将发布版本转换为所需格式的工作。请注意将 |s
与 Releases 令牌一起使用。此构造确保令牌的内容包含在引号中,这是 replace
函数所期望的。
最后,return
命令带有 $
returns eval
的结果,但没有字段名称本身。没有它,子搜索将 return releases="2020150015, 2020150016, 2020220019"
,这是行不通的。