使用logstash从字段中匹配的字符串中获取起始10个字符?

使用logstash从字段中匹配的字符串中获取起始10个字符?,logstash,logstash-grok,Logstash,Logstash Grok,我想从以Exception结尾的字符串中获取前10个字符。 示例:我有如下字段: "ERRORMESSAGE" => "local exporter [default_local] - failed to delete indice s\r\nRemoteTransportException[[data-2][10.0.x.x:x300][indices:admin/delete]]; nested: IndexNotFoundException[no such index];\r\n

我想从以Exception结尾的字符串中获取前10个字符。 示例:我有如下字段:

 "ERRORMESSAGE" => "local exporter [default_local] - failed to delete indice
s\r\nRemoteTransportException[[data-2][10.0.x.x:x300][indices:admin/delete]];
 nested: IndexNotFoundException[no such index];\r\nCaused by: [.marvel-es-1-2017
.06.07] IndexNotFoundException[no such index]\r\n        at org.elasticsearch.cl
uster.metadata.MetaDataDeleteIndexService$1.execute(MetaDataDeleteIndexService.j
ava:91)\r\n        at org.elasticsearch.cluster.ClusterStateUpdateTask.execute(C
lusterStateUpdateTask.java:45)\r\n        at org.elasticsearch.cluster.service.I
nternalClusterService.runTasksForExecutor(InternalClusterService.java:468)\r\n
  at org.elasticsearch.cluster.service.InternalClusterService$UpdateTask.run
(InternalClusterService.java:772)\r\n        at org.elasticsearch.common.util.co
ncurrent.PrioritizedEsThreadPoolExecutor$TieBreakingPrioritizedRunnable.runAndCl
ean(PrioritizedEsThreadPoolExecutor.java:231)\r\n        at org.elasticsearch.co
mmon.util.concurrent.PrioritizedEsThreadPoolExecutor$TieBreakingPrioritizedRunna
ble.run(PrioritizedEsThreadPoolExecutor.java:194)\r\n        at java.util.concur
rent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)\r\n        at ja
va.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)\r\
n        at java.lang.Thread.run(Thread.java:745)\r",
我需要捕捉以异常结尾的字符串。为此我用了这个

grok {
  match => ["ERRORMESSAGE", "(?<ExceptionType>{10}.Exception)"]
}
grok{
match=>[“ERRORMESSAGE”,“(?{10}.Exception)”]
}
在这里,我找到了以异常结尾的字符串的前10个字符,但是我得到了这个错误
{:Exception=>“RegexpError”
。另外一个问题是,如果在
ERRORTYPE
字段中有更多以异常结尾的字符串,那么上面的grok是否会生成两个或更多的
ExceptionType
字段


谢谢

正确的正则表达式是
(?.{10}例外)
。量词(
{10}
)必须在它量化的标记(
)之前(至少这是我理解它的方式,我不是正则表达式专家)

grok筛选器将返回第一个匹配项。
在您的示例中,它将是
eTransporteException

此外,为了测试您的grok模式,您可以使用以下方法获得第二个exnotfoundException:通过给出exceptiontype[1]来获得第二个exnotfoundException吗?因为它显示的是第一个匹配的one@C.Yaswanth您可以添加第二个元素异常(如:
(?。{10}异常)。*(?。{10}异常)
),但如果跟踪中只有一个异常,则会中断grok筛选器。