tdk标签影响网站权重做网站v赚钱
web/
2025/9/27 14:38:45/
文章来源:
tdk标签影响网站权重,做网站v赚钱,郑州专业网站推广优化公司,休闲农庄展示网站文章目录 Elasticsearch聚合查询说明空值率查询DSL Elasticsearch聚合基础知识扩展Elasticsearch聚合概念Script 用法Elasticsearch聚合查询语法指标聚合#xff08;Metric Aggregations#xff09;桶聚合#xff08;Bucket Aggregations#xff09;矩阵聚合#xff08;Ma… 文章目录 Elasticsearch聚合查询说明空值率查询DSL Elasticsearch聚合基础知识扩展Elasticsearch聚合概念Script 用法Elasticsearch聚合查询语法指标聚合Metric Aggregations桶聚合Bucket Aggregations矩阵聚合Matrix Aggregations组合聚合Pipeline Aggregations Elasticsearch聚合查询说明
Elasticsearch聚合查询是一种强大的工具允许我们对索引中的数据进行复杂的统计分析和计算。本文将详细解释一个聚合查询示例该查询用于统计满足特定条件的文档数量并计算其占总文档数量的百分比。这里回会分享如何统计某个字段的空值率然后扩展介绍ES的一些基础知识。 空值率查询DSL
此查询结构通过 GET /my_index/_search 发送到 Elasticsearch以实现对索引 my_index 的聚合分析。查询分为以下几个部分
{size: 0, // 不返回任何搜索结果只聚合数据aggs: {all_documents_agg: { // 聚合所有文档terms: {script: {source: return all_documents; // 强制所有文档聚合到一个桶中}},aggs: {total_count: { // 统计所有文档的数量value_count: {field: _id // 使用文档的ID字段进行计数}},filtered_count: { // 统计满足特定条件的文档数量value_count: {script: {source: if (doc[my_field].size() ! 0 doc[my_field].value ! ) return 1 // 统计字段 my_field 非空且非零的文档数量}}},percentage_agg: { // 计算满足特定条件的文档数量占总文档数量的百分比bucket_script: {buckets_path: {totalCount: total_count, // 引用所有文档的数量filteredCount: filtered_count // 引用满足特定条件的文档数量},script: params.filteredCount / params.totalCount * 100 // 计算百分比}}}}}
}聚合部分详解
size: 0此设置意味着查询不会返回具体的搜索结果而是仅执行聚合分析。aggs聚合定义了一个名为 all_documents_agg 的聚合。 terms使用 script 将所有文档强制聚合到一个名为 all_documents 的桶中。aggs在 all_documents 桶内定义了三个子聚合 total_count使用 value_count 统计所有文档的数量基于文档的 _id 字段。filtered_count使用 value_count 统计满足特定条件的文档数量。条件是字段 my_field 非空且非零。percentage_agg使用 bucket_script 计算满足特定条件的文档数量占总文档数量的百分比。此聚合使用 total_count 和 filtered_count 的结果并通过 params.filteredCount / params.totalCount * 100 计算百分比。
Elasticsearch聚合基础知识扩展
Elasticsearch聚合概念
Elasticsearch 的聚合功能类似于 SQL 中的 GROUP BY 语句允许我们对数据进行分组和计算统计信息。聚合主要分为以下几类
Metric Aggregations度量聚合计算数值例如计数、平均值、最大值、最小值等。例如value_count 就是一个度量聚合用于计算特定字段的值的数量。Bucket Aggregations桶聚合将文档分组到不同的桶中。每个桶都可以包含一个或多个文档。例如terms 聚合将文档根据特定字段的值进行分组。Pipeline Aggregations管道聚合对其它聚合的结果进行进一步计算。例如bucket_script 可以对多个聚合结果进行自定义计算。
Script 用法
在 Elasticsearch 中脚本可以用于在查询和聚合中执行动态计算。在上述查询中脚本用于两个地方
terms 聚合中的 script将所有文档强制聚合到一个桶中。filtered_count 的条件判断检查字段 my_field 是否非空且非零。bucket_script 聚合计算满足条件的文档数量占总文档数量的百分比。
使用脚本可以提供更大的灵活性但需要注意性能和安全性问题。
Elasticsearch聚合查询语法
ElasticsearchES提供了丰富的聚合功能用于对数据进行统计和分析。以下是一些常见的聚合类型及其示例
指标聚合Metric Aggregations
sum计算数值字段的总和。avg计算数值字段的平均值。min查找数值字段的最小值。max查找数值字段的最大值。extended_stats获取数值字段的多个统计数据平均值、最大值、最小值、总和、方差等。value_count计算字段的非空值数量。
示例
{aggs: {my_sum_agg: {sum: {field: numeric_field}},my_avg_agg: {avg: {field: numeric_field}}}
}桶聚合Bucket Aggregations
date_histogram基于时间范围将文档分组为多个桶。histogram基于数值字段将文档分组为多个桶。terms基于字符串或数值字段将文档分组为多个桶。filters将文档分组为多个桶每个桶对应一组过滤条件。
示例 {aggs: {my_date_histogram_agg: {date_histogram: {field: timestamp,interval: 1d}},my_terms_agg: {terms: {field: category_field}}}
}矩阵聚合Matrix Aggregations
matrix_stats计算多个数值字段的统计数据如相关性、协方差、方差等。
示例
{aggs: {my_matrix_stats_agg: {matrix_stats: {fields: [numeric_field1, numeric_field2]}}}
}组合聚合Pipeline Aggregations
derivative计算聚合结果的导数。cumulative_sum计算聚合结果的累积和。bucket_script在多个桶聚合结果上执行脚本。bucket_selector根据脚本选择或排除特定桶。
示例
{aggs: {my_terms_agg: {terms: {field: category_field},aggs: {my_avg_agg: {avg: {field: numeric_field}},my_bucket_script_agg: {bucket_script: {buckets_path: {avgField: my_avg_agg},script: params.avgField * 2}}}}}
}原文地址Elasticsearch如何聚合查询多个统计值如何嵌套聚合并相互引用统计索引中某一个字段的空值率语法是怎么样的
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/82815.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!