给定此文本(nginx日志中的示例)
646#646: *226999 SSL_do_handshake() failed (SSL: error:1417D18C:SSL routines:tls_process_client_hello:version too low) while SSL handshaking, client: 192.0.2.0, server: 0.0.0.0:443
standard
标记生成器产生646
646
226999
ssl_do_handshake
failed
ssl
error
1417d18c:ssl
routines:tls_process_client_hello:version
too
low
while
ssl
handshaking
client
192.0.2.0
server
0.0.0.0
443
我希望 token
1417d18c:ssl
和routines:tls_process_client_hello:version
在:
上另外拆分。但是,我不希望ssl_do_handshake
或192.0.2.0
进一步分割,例如can't
被标记为can
,t
。内置 token 生成器后是否可以应用其他拆分?
我会坚持使用
pattern
吗?在哪种情况下,哪个正则表达式重复了standard
的行为?
最佳答案
您似乎在添加到标准分析仪上。如果您对标准分析器的功能很满意,并且只是希望生成的 token 进一步由:
标记,那么您可以将标准分析器定义为您的自定义分析器,命名为here,并添加pattern capture token filter以进一步标记由标准标记器生成的 token 。
因此,如下定义分析器和 token 过滤器:
{
"settings": {
"analysis": {
"analyzer": {
"logs": {
"tokenizer": "standard",
"filter": [
"lowercase",
"log"
]
}
},
"filter": {
"log": {
"type": "pattern_capture",
"patterns": [
"([^:]+)"
],
"preserve_original" : false
}
}
}
}
}
关于elasticsearch - 如何向标准 token 生成器添加其他分隔符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56221177/