使用Python SDK时,如何获取Splunk搜索结果的完整内容?

使用Python SDK时,如何获取Splunk搜索结果的完整内容?,python,splunk,Python,Splunk,我可以从一次性查询中获得结果,但无法获得原始字段的全部内容 import splunklib.client as client import splunklib.results as results def splunk_oneshot(search_string, **CARGS): # Run a oneshot search and display the results using the results reader service = client.connect

我可以从一次性查询中获得结果,但无法获得原始字段的全部内容

import splunklib.client as client
import splunklib.results as results

def splunk_oneshot(search_string, **CARGS):
    # Run a oneshot search and display the results using the results reader

    service = client.connect(**CARGS)
    oneshotsearch_results = service.jobs.oneshot(search_string)

    # Get the results and display them using the ResultsReader
    reader = results.ResultsReader(oneshotsearch_results)
    for item in reader:
        for key in item.keys():
            print(key, len(item[key]), item[key])
这给了我以下关于_raw的信息:

('_raw', 120, '2013-05-03 22:17:18,497+0000 [SWF Activity  attNsgActivitiesTaskList1 19] INFO  c.s.r.h.s.a.n.AttNsgSmsRequestAdapter - ')

因此,此内容被截断为120个字符。我需要搜索结果的整个值,因为我需要运行一些字符串比较。我没有找到任何关于ResultsReader字段或其大小限制的文档。

我的猜测是,这是由于在事件原始数据中插入了特殊标记,以在Splunk UI前端突出显示匹配的搜索词造成的。很可能,您的搜索字符串指定了在截断点处原始数据中存在的匹配文字项。这不是SDK结果获取方法的适当默认行为,并且当前打开了一个bug来修复此问题(内部参考DVPL-1519)

幸运的是,避免这个问题相当简单:只需将
segmentation='none'
作为参数传递给作业。results()方法:

(…)
oneshotsearch\u results=service.jobs.oneshot(search\u string,segmentation='none')

(……)


请注意,service.jobs()方法的“segmentation”参数仅在Splunk 5.0及更高版本上可用。

这解决了问题,感谢hexx!有关于这些结果字段的文档吗?关于
jobs.oneshot()
方法的参数有一些很好的信息,尽管我可以看到“segmentation”参数没有列在那里!我会把它修好的。该信息确实存在于
/services/search/jobs/{SID}/events
端点的Splunk REST API引用中,由
jobs.oneshot()
调用的
job.results()
方法最终会命中该端点。不,这会再次被破坏,即使使用segmented='none',也会被截断为119个字符:(“U raw”,119,,,2013-05-08 16:09:11040+0000[SWF活动地址:attNsgActivitiesTaskList1]信息c.s.r.h.s.a.n.ATTNSGMSRequestAdapter-”)如果sdk发生更改,我会进行pip安装-U