0

鉴于此文本(来自 nginx 日志的示例)

646#646:* 226999 SSL_do_handshake() 在 SSL 握手时失败(SSL:错误:1417D18C:SSL 例程:tls_process_client_hello:版本太低),客户端:192.0.2.0,服务器: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:sslroutines:tls_process_client_hello:version:. 但是,我不希望ssl_do_handshakeor192.0.2.0被进一步拆分,也不应该can't被标记为can, t

有没有办法在内置标记器之后应用额外的拆分?

我坚持使用pattern吗?在这种情况下,哪个正则表达式会复制standard?

4

1 回答 1

1

您似乎添加了标准分析器。如果您对标准分析器所做的一切满意,并且还希望生成的标记进一步被标记化,:那么您可以将标准分析器定义为您的自定义分析器,添加一个模式捕获标记过滤器以进一步标记标准生成的标记分词器。

所以定义分析器和令牌过滤器如下:

{
  "settings": {
    "analysis": {
      "analyzer": {
        "logs": {
          "tokenizer": "standard",
          "filter": [
            "lowercase",
            "log"
          ]
        }
      },
      "filter": {
        "log": {
          "type": "pattern_capture",
          "patterns": [
            "([^:]+)"
          ],
          "preserve_original" : false
        }
      }
    }
  }
}
于 2019-05-21T04:12:27.043 回答