我正在使用elasticsearch和kibana来存储我的日志。 现在我想要的是从一个字段中提取一个数字并存储一个新字段。
例如,有这个:
accountExist执行时间:1046 ms
我想提取数字(1046)并在kibana的新字段中查看。
有可能吗?怎么样? 谢谢你的帮助
答案 0 :(得分:5)
您需要在索引编制之前/期间执行此操作。
在Elasticsearch中,您可以在索引编制期间获得所需内容:
Analyze API可能有助于测试目的。
答案 1 :(得分:1)
虽然不具备性能,但如果必须避免重新索引,您可以在kibana中使用脚本字段。
此处简介:https://www.elastic.co/blog/using-painless-kibana-scripted-fields
script.painless.regex.enabled:true
def logMsg = params['_source']['log_message']; if(logMsg == null) { return -10000; } def m = /.*accountExist execution time: ([0-9]+) ms.*$/.matcher(params['_source']['log_message']); if ( m.matches() ) { return Integer.parseInt(m.group(1)) } else { return -10000 }
虽然我理解,对于数百万个日志条目的脚本字段不具备效果,但我的用例是一个非常具体的日志条目,每天记录10次,我只使用结果字段创建一个可视化或分析,我提前通过常规查询减少候选人。
如果有可能只在你需要它们的情况下计算这些字段(或者它们有意义并且可以开始计算,即为了使"返回-1000和#34;不必要)。目前,它们将被应用并显示每个日志条目 你可以在这样的查询中生成脚本化的字段:https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-script-fields.html但这似乎有点过于掩盖,以便轻松维护:/