【Elasticsearch】terms聚合

server/2025/2/12 3:38:54/

 

总结

术语聚合(`terms aggregation`)是 Elasticsearch 中一种非常强大的聚合方式,用于根据字段值对数据进行分组和统计。它支持多种参数和配置选项,能够满足复杂的查询需求。以下是术语聚合的主要功能和注意事项的总结:

主要功能

1. 动态分桶:根据字段的唯一值动态创建分桶。

2. 排序:

• 默认按文档计数降序排序。

• 支持按术语值(`_key`)排序。

• 支持按子聚合结果排序(如最大值、最小值等)。

3. 过滤:

• 使用正则表达式(`include`和`exclude`)过滤术语。

• 使用精确值过滤术语。

• 使用分区(`partition`)处理大量唯一术语。

4. 性能优化:

• 使用全局序号(`global_ordinals`)优化性能。

• 支持延迟计算子聚合(`collect_mode`)以减少内存占用。

5. 错误处理:

• 提供文档计数误差上限(`doc_count_error_upper_bound`)。

• 支持显示术语文档计数误差(`show_term_doc_count_error`)。

6. 其他特性:

• 支持运行时字段(`runtime_mappings`)。

• 支持处理缺失值(`missing`)。

• 支持显式指定字段类型(`value_type`)。

注意事项

1. 字段类型:

• 默认不支持对`text`字段进行术语聚合,建议使用`keyword`子字段。

• 如果需要对`text`字段进行聚合,可以启用`fielddata`,但会增加内存使用。

2. 性能问题:

• 增加`size`和`shard_size`参数会增加内存和网络开销。

• 使用`breadth_first`模式时,会增加内存开销。

3. 排序限制:

• 不推荐按文档计数升序排序(`"_count": "asc"`),可能会导致不准确的结果。

• 按子聚合排序时,需要谨慎选择排序方式,避免错误结果。

4. 分区限制:

• 分区不能与`exclude`参数一起使用。

• 分区数量和每个分区的大小需要根据数据量和资源情况进行合理调整。

5. 字段类型一致性:

• 在多个索引中进行聚合时,确保字段类型一致,或者使用`value_type`参数进行强制转换。

术语聚合在数据分析、日志处理、搜索结果优化等场景中非常有用,但需要根据具体需求和数据特点合理配置参数,以确保查询的准确性和性能。


http://www.ppmy.cn/server/166636.html

相关文章

sqlite 查看表结构

在SQLite中,查看表结构通常有以下几种方法: 使用.schema命令 在SQLite的命令行界面中,你可以使用.schema命令加上表名来查看该表的结构。例如,如果你想查看名为your_table_name的表结构,你可以这样做: .s…

Spring AI 和 Ollama 实现 DeepSeek-R1 的本地 API 服务与调用

Spring AI 和 Ollama 实现 DeepSeek-R1 的本地 API 服务与调用 最近,DeepSeek 开源了其第一代推理大模型 DeepSeek-R1,该模型以其极低的成本和与 OpenAI 相媲美的性能,在国内外引发了广泛讨论。作为开发者,我在独立产品中一直使用…

使用Cline+deepseek实现VsCode自动化编程

要在Visual Studio Code (VS Code)中实现自动化编程,特别是使用 Cline 和 Deepseek, 你需要先了解这两个工具的基本概念和功能。Cine 可能是一个打字错误或特定领域的工具 名称,而 Deepseek 可能指的是类似于深度学习模型或某种特定的代码搜索工具。这…

vue print 打印

vue 点击打印页面部分内容&#xff0c;或者打印弹窗内的内容 打印页面部分内容 <template><div><div id"print"><div class"info"><div class"bx_title">费用报销单<span class"code">NO.<s…

25/2/7 <机器人基础> 牛顿-欧拉递推公式,开闭环

牛顿-欧拉递推公式是用于计算刚体动力学中&#xff0c;刚体的角速度和角加速度的递推关系。这个公式是牛顿第二定律和欧拉旋转定理的结合&#xff0c;适用于描述刚体在空间中的旋转运动。 对于一个刚体&#xff0c;设其在某时刻的角速度为 ω&#xff0c;角加速度为 α&#xf…

python2048游戏

实现了一个完整的2048游戏&#xff0c;并将其展示在一个图形化界面上。具体功能包括&#xff1a; 初始化游戏板&#xff1a;创建一个4x4的二维列表&#xff0c;表示游戏板&#xff0c;并在初始状态下随机放置两个数字&#xff08;通常是2或4&#xff09;。绘制游戏板&#xff…

论文笔记-COLING2025-LLMTreeRec

论文笔记-COLING2025-LLMTreeRec: Unleashing the Power of Large Language Models for Cold-Start Recommendations LLMTreeRec: 释放大语言模型在冷启动推荐中的力量摘要1.引言2.框架2.1项目树构建2.2以LLM为中心的基于树的推荐2.2.1推荐链策略2.2.2检索策略 3.实验3.1实验设…

【LeetCode Hot100 多维动态规划】最小路径和、最长回文子串、最长公共子序列、编辑距离

多维动态规划 机器人路径问题思路代码实现 最小路径和问题动态规划思路状态转移方程边界条件 代码实现 最长回文子串思路代码实现 最长公共子序列&#xff08;LCS&#xff09;题目描述解决方案 —— 动态规划1. 状态定义2. 状态转移方程3. 初始化4. 代码实现 编辑距离&#xff…