如何向标准分词器添加额外的分隔符?
How to add additional separators to the standard tokenizer?
鉴于此文本(来自 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
我希望令牌 1417d18c:ssl
和 routines:tls_process_client_hello:version
在 :
上进行额外拆分。但是,我不希望 ssl_do_handshake
或 192.0.2.0
进一步拆分,也不应该,例如can't
被代币化为 can
、t
。
有没有办法在内置分词器之后应用额外的拆分?
我是否坚持使用 pattern
?在这种情况下,什么正则表达式复制了 standard
?
的行为
您似乎添加了标准分析器。如果您对标准分析器的作用没有问题,并且只是希望生成的令牌进一步被 :
标记化,那么您可以将标准分析器定义为您的自定义分析器,因为给出 here and add a pattern capture token filter 以进一步标记由生成的令牌标准分词器。
所以定义分析器和令牌过滤器如下:
{
"settings": {
"analysis": {
"analyzer": {
"logs": {
"tokenizer": "standard",
"filter": [
"lowercase",
"log"
]
}
},
"filter": {
"log": {
"type": "pattern_capture",
"patterns": [
"([^:]+)"
],
"preserve_original" : false
}
}
}
}
}
鉴于此文本(来自 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
我希望令牌 1417d18c:ssl
和 routines:tls_process_client_hello:version
在 :
上进行额外拆分。但是,我不希望 ssl_do_handshake
或 192.0.2.0
进一步拆分,也不应该,例如can't
被代币化为 can
、t
。
有没有办法在内置分词器之后应用额外的拆分?
我是否坚持使用 pattern
?在这种情况下,什么正则表达式复制了 standard
?
您似乎添加了标准分析器。如果您对标准分析器的作用没有问题,并且只是希望生成的令牌进一步被 :
标记化,那么您可以将标准分析器定义为您的自定义分析器,因为给出 here and add a pattern capture token filter 以进一步标记由生成的令牌标准分词器。
所以定义分析器和令牌过滤器如下:
{
"settings": {
"analysis": {
"analyzer": {
"logs": {
"tokenizer": "standard",
"filter": [
"lowercase",
"log"
]
}
},
"filter": {
"log": {
"type": "pattern_capture",
"patterns": [
"([^:]+)"
],
"preserve_original" : false
}
}
}
}
}