当前位置: 首页 > article >正文

【Elasticsearch】文本分类聚合Categorize Text Aggregation

 响应参数讲解:

key (字符串)由 categorization_analyzer 提取的标记组成,这些标记是类别中所有输入字段值的共同部分。 doc_count (整数)与类别匹配的文档数量。 max_matching_length (整数)从较短消息中生成的类别也可能与从较长消息中生成的类别匹配。 max_matching_length 表示应被视为属于该类别的消息的最大长度。在搜索属于该类别的消息时,任何长度超过 max_matching_length 的消息都应被排除。使用此字段可以防止对短消息类别的搜索匹配到更长的消息。

regex (字符串)一个正则表达式,它将匹配类别中包含的所有输入字段值。在类别中包含的值的顺序不同时, regex 可能不会包含 key 中的每个术语。然而,在简单情况下, regex 将是按顺序连接的术语组成的正则表达式,允许在它们之间有任意部分。不建议将 regex 作为搜索原始被分类文档的主要机制,因为正则表达式搜索非常慢。相反,应该使用 key 字段中的术语来搜索匹配的文档,因为术语搜索可以利用倒排索引,因此速度要快得多。然而,在某些情况下,使用 regex 字段来测试未被索引的少量消息是否属于该类别,或者确认 key 中的术语在所有匹配文档中按正确顺序出现,可能是有用的。

总结:

重新分析大型结果集将需要大量的时间和内存。应将此聚合与异步搜索(Async search)结合使用。此外,你还可以考虑将该聚合作为采样器(sampler)或多样化采样器(diversified sampler)聚合的子聚合使用。这通常可以提高速度和内存使用效率。

POST log-messages/_search

{

  "aggs": {

    "categories": {

      "categorize_text": {

        "field": "message"

      }

    }

  }

}

输出

{

  "aggregations": {

    "categories": {

      "buckets": [

        {

          "doc_count": 3,

          "key": "Node shutting down",

          "regex": ".*?Node.+?shutting.+?down.*?",

          "max_matching_length": 49

        },

        {

          "doc_count": 1,

          "key": "Node starting up",

          "regex": ".*?Node.+?starting.+?up.*?",

          "max_matching_length": 47

        }

      ]

    }

  }

}

使用 categorization_analyzer 的示例配置:

{

  "aggs": {

    "categories": {

      "categorize_text": {

        "field": "message",

        "categorization_analyzer": {

          "char_filter": ["html_strip"],

          "tokenizer": "ml_standard",

          "filter": ["lowercase", "stop"]

        }

      }

    }

  }

}

使用   categorization_filters   的示例配置:

{

  "aggs": {

    "categories": {

      "categorize_text": {

        "field": "message",

        "categorization_filters": [

          "\\w+\\_\\d{3}", // 过滤掉类似 "foo_123" 的模式

          "ERROR:.*" // 过滤掉以 "ERROR:" 开头的日志

        ]

      }

    }

  }

}

 


http://www.kler.cn/a/534163.html

相关文章:

  • pytorch实现门控循环单元 (GRU)
  • 基于直觉的理性思维入口:相提并论的三者 以“网络”为例
  • 在游戏本(6G显存)上本地部署Deepseek,运行一个14B大语言模型,并使用API访问
  • 游戏引擎学习第88天
  • 8.原型模式(Prototype)
  • Spring Security(maven项目) 3.0.3.0版本
  • 路由器及工作原理与常用路由配置命令详解
  • Redis主从模式与哨兵模式详解及案例分析
  • 如何利用maven更优雅的打包
  • java 日常下拉框接口字典封装
  • DeepSeek R1 简单指南:架构、训练、本地部署和硬件要求
  • 后缀表达式 C++ 蓝桥杯 栈
  • JVS低代码逻辑引擎多种业务场景触发案例配置:涵盖列表页按钮、表单数据、流程审批、外部API接口调用等
  • Cookie及Session---笔记
  • Java面试题基础篇3:10道基础面试题
  • 安装和卸载RabbitMQ
  • 基于Javascript的封装、方法重载、构造方法
  • 【ArcGIS Pro简介2】
  • 1. Kubernetes组成及常用命令
  • DeepSeek 与 ChatGPT 对比分析
  • Linux 常用命令与实战教程
  • HTTP请求响应周期步骤
  • 基于Ubuntu2404搭建Zabbix7.2
  • 1. 初识spark
  • 在 Spring Boot 项目中,bootstrap.yml 和 application.yml文件区别
  • 智慧楼宇的监控都用上3D形式了,2D要摒弃了。