elasticsearch - 如何向标准 token 生成器添加其他分隔符?

标签 elasticsearch elasticsearch-analyzers

给定此文本(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:sslroutines:tls_process_client_hello:version:上另外拆分。但是,我不希望ssl_do_handshake192.0.2.0进一步分割,例如can't被标记为cant

内置 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/

相关文章:

elasticsearch - Elasticsearch 索引上的多个分析器

elasticsearch - 如何更新elasticsearch中字段的数据类型

java - 使用 Java 代码中的不同引号执行 Bash 单行代码以进行 Elasticsearch 查询

apache-spark - Spark 流传输期间无法将数据帧保存到Elasticsearch

elasticsearch - 使用通配符的Elasticsearch不区分大小写的query_string查询

regex - ElasticSearch Analyzer自动完成功能,用于字母数字

elasticsearch - Elasticsearch-at&t和procter&gamble案例

elasticsearch - Elasticsearch-如何为搜索和索引指定相同的分析器

elasticsearch - 如何在elasticsearch中过滤以下查询?

elasticsearch - 带有文档时间点的Elasticsearch日期直方图