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

server/2025/2/8 1:55:04/

 响应参数讲解:

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.ppmy.cn/server/165818.html

相关文章

第 1 天:UE5 C++ 开发环境搭建,全流程指南

🎯 目标:搭建 Unreal Engine 5(UE5)C 开发环境,配置 Visual Studio 并成功运行 C 代码! 1️⃣ Unreal Engine 5 安装 🔹 下载与安装 Unreal Engine 5 步骤: 注册并安装 Epic Game…

(2025,LVLM,高分辨率图像处理,子图划分,全局语义引导注意力权重分配)

Global Semantic-Guided Sub-image Feature Weight Allocation in High-Resolution Large Vision-Language Models 目录 1. 引言 2. 本文贡献 3. 方法 3.1 现有高分辨率图像处理方法 3.2 全局语义引导权重分配(GSWA) 4. 实验结果 4.1 通用基准测试…

qsort函数对二维数组的排序Cmp函数理解

在我们解题过程中,很多情况下,排序是必不可少的一环。 对于C语言来说,排序函数qsort就显得非常重要。 本文介绍一维数组、二维数组的qsort排序,其中二维数组的Cmp函数的写法做了详细注释。 qsort函数原型介绍: /* …

嵌入式八股文面试题(一)C语言部分

1. 变量/函数的声明和定义的区别? (1)变量 定义不仅告知编译器变量的类型和名字,还会分配内存空间。 int x 10; // 定义并初始化x int x; //同样是定义 声明只是告诉编译器变量的名字和类型,但并不为它分配内存空间…

硬件电路基础

目录 1. 电学基础 1.1 原子 1.2 电压 1.3 电流 1.电流方向: 正极->负极,正电荷定向移动方向为电流方向,与电子定向移动方向相反。 2.电荷(这里表示负电荷)运动方向: 与电流方向相反 1.4 测电压的时候 2. 地线…

【hudi】基于hive2.1.1的编译hudi-1.0.0源码

hudi版本1.0.0 需要使用较低版本的hive,编译hudi只需要修改下类即可: org.apache.hudi.hadoop.hive.HoodieCombineHiveInputFormat 一、复制org.apache.hadoop.hive.common.StringInternUtils 找个hive2.3.9的源码包,创建包路径&#xff0c…

k8s常见面试题1

k8s常见面试题1 Kubernetes 基础知识核心组件及作用Pod、Deployment、Service的区别保证Pod高可用ConfigMap vs Secret网络模型与Pod通信Ingress 与 Service 的主要区别什么是 Ingressk8s中为什么要做ServiceIngress 与 Service 的区别 资源配额 Kubernetes 实践如何监控 Kuber…

安卓pad仿写element-ui表单验证

安卓pad仿写element-ui表单验证 背景:仿写对象:showcase: 布局总览:核心代码总览:代码仓: 背景: 最近半年开始接触安卓开发,平时开发接触的点比较零碎,计划闲暇时做一些…