Elasticsearch 聚合 API2025年3月17日 | 阅读 7 分钟 Elasticsearch 提供了聚合 API,用于数据聚合。聚合框架根据搜索查询提供聚合数据。简单来说,聚合框架收集由搜索查询选择的所有数据并提供给用户。它包含几个构建块,有助于构建复杂的数据摘要。聚合生成在 Elasticsearch 中可用的分析信息。 以下是需要注意的关于聚合的一些重要点
查看下图,了解聚合的样式 ![]() 聚合语法聚合的基本结构 - 我们可以在一个操作中使用多个聚合。 aggregation - 它是 JSON 中的一个对象,用于保存要计算的聚合。 您也可以使用 aggs 关键字代替 aggregation。 aggregation_name - 每个聚合都有一个由用户定义的逻辑名称。 例如,使用 avg_price 来计算平均价格。 aggregation_type - 它是聚合的类型,因为每个聚合都有一个特定的名称。 aggregation_body - 每个聚合类型都包含其自己的聚合主体,这取决于聚合的性质。 field - 这是一个字段关键字。 document_field_name - 它是文档中目标列的名称。 聚合类型在 Elasticsearch 中,有几种类型的聚合可用,其中每个聚合都有其自己的目的和输出。 为了简化,它们被概括为 4 个主要系列,如下所示 -
度量聚合度量聚合是一种聚合类型,负责跟踪度量指标。度量聚合从聚合文档的字段值计算矩阵。它还有助于计算一组文档的度量指标。 一些聚合生成数值度量指标,它们要么是 -
分桶分桶是一组聚合,负责构建桶。它不像度量聚合那样计算字段的度量指标。在此聚合中,每个桶都与一个键和一个文档相关联。桶聚合用于分组或创建数据桶。这些数据桶可以基于现有字段、范围和自定义过滤器等。 矩阵聚合矩阵聚合是一种对多个字段进行操作的聚合。 它对多个字段起作用,并从从请求文档字段中提取的值生成矩阵结果。矩阵不支持脚本。 流水线正如名称本身所暗示的那样,它从其他聚合的输出中获取输入。 换句话说,我们可以说 - 管道聚合负责聚合其他聚合的输出。 所有这些聚合都进一步分类,特别是桶、管道和度量聚合。 五个重要的聚合下面通过示例描述了 Elasticsearch 的一些重要聚合。 Avg 聚合平均聚合用于计算索引中任何数值字段的平均值。 在创建查询时,在查询中指定聚合名称 avg。 查看以下示例以查找字段 “fees” 的平均值 复制代码 通过执行上述代码,我们将获得文档中存在的费用的平均值。 响应 您将获得类似以下响应的输出。 如果该字段缺失 如果该字段不存在(您正在计算平均值),则默认情况下会忽略它并返回一个空值。 您可以在聚合中添加一个缺失字段(“missing”: 0)以将缺失值视为默认值。 执行以下代码 复制代码 词条聚合词条聚合负责通过字段值生成桶。 通过选择一个字段(如名称、入学年份等),它生成桶。 在创建查询时,在查询中指定聚合名称。 执行以下代码以搜索按入学年份字段分组的值 复制代码 通过执行上述代码,输出将作为按入学年份分组的结果返回。 响应 您将获得类似以下响应的输出。 上面的查询和响应将类似于 elasticsearch-head 插件中的以下屏幕截图 ![]() 基数聚合找到一个字段的唯一值是一个常见的要求。 基数聚合有助于查找任何特定字段的唯一值。 它有助于确定索引中存在的唯一元素的数量。 在创建查询时,在查询中指定聚合名称。 执行以下代码以查找字段的唯一值的数量 复制代码 通过执行上述代码,输出将返回 fees 字段在 student 索引中的唯一值的总数。 响应 您将获得类似以下响应的输出。 请参阅以下屏幕截图,了解如何在 elasticsearch head 插件中运行查询并返回结果 - ![]() Stats 聚合Stats 聚合代表统计信息,它是一个多值数值矩阵聚合。 它有助于一次生成总和、平均值、最小值、最大值和计数。 当聚合文档很大时,此聚合允许为特定的数值字段生成所有统计信息。 查询结构与其他聚合相同。 执行以下代码以一次查找总和、平均值、最小值、最大值和计数 复制代码响应 通过执行上述代码,您将获得如下响应。 过滤器聚合过滤器聚合有助于在单个桶中过滤文档。 它的主要目的是通过过滤文档为用户提供最佳结果。 让我们举一个例子,根据 “fees” 和 “Addmission year” 过滤文档。 这将返回与查询中指定的条件匹配的文档。 您可以使用您想要的任何字段来过滤文档。 执行以下代码以过滤与您在查询中指定的条件匹配的文档 复制代码 响应 通过执行上述代码,您将获得如下响应。 上面的查询和响应将类似于 elasticsearch head 插件中的以下屏幕截图 - ![]() |
我们请求您订阅我们的新闻通讯以获取最新更新。