Splunk JS SDK创建搜索请求报错,查询语句如何正确改写?
解决方案
错误根因
两次报错的核心原因是遗漏了Splunk SPL搜索语句的强制前缀关键字search:所有普通数据检索语句都必须以search开头,否则Splunk会把语句开头的第一个字段名识别为未知搜索命令,抛出对应报错。
同时需要注意JS的字符串嵌套规则:你的查询里包含带空格的字段名需要用双引号包裹,若外层也用双引号包裹整个查询,内部的双引号需要加转义符,否则会导致JS语法错误、查询内容截断。
正确修改方案
直接替换原第53行代码即可,以下提供三种可选写法,任选其一即可:
- 写法1:外层用单引号包裹查询,无需转义内部双引号
service.search('search index=comtech_np sourcetype=comtech_cdv_csv ENodeB=* "PSAP Name"=* "Calling Party Number"=* "Call Start Time"=* "Call End Time"=*', {}, done);
- 写法2:外层保留双引号,内部双引号加反斜杠转义
service.search("search index=comtech_np sourcetype=comtech_cdv_csv ENodeB=* \"PSAP Name\"=* \"Calling Party Number\"=* \"Call Start Time\"=* \"Call End Time\"=*", {}, done);
- 写法3:用ES6模板字符串包裹,适配后续需要拼接变量的复杂查询场景
const searchQuery = `search index=comtech_np sourcetype=comtech_cdv_csv ENodeB=* "PSAP Name"=* "Calling Party Number"=* "Call Start Time"=* "Call End Time"=*`; service.search(searchQuery, {}, done);
修改完成后重新运行代码即可正常执行搜索,不会再出现未知命令的报错。
内容的提问来源于stack exchange,提问作者tmp1234
相关产品推荐
相关产品推荐

