ELK第六篇:Aggregations (聚合)REST API的使用

实时搜索引擎Elasticsearch(4)——Aggregations (聚合)API的使用 本篇将介绍ES提供的聚合API的使用。ES提供的聚合功能可以用来进行简单的数据分析。本文仍然以上一篇提供的数据为例来讲解。 阅读详情

简介

上一篇博客介绍了ES中的简单查询API的使用,本篇将介绍ES提供的聚合API的使用。ES提供的聚合功能可以用来进行简单的数据分析。本文仍然以上一篇提供的数据为例来讲解。数据如下:

studentNonamemaleagebirthdayclassNoaddressisLeader
1刘备男241985-02-031湖南省长沙市true
2关羽男221987-08-232四川省成都市false
3糜夫人女191990-06-121上海市false
4张飞男201989-07-303北京市false
5诸葛亮男181992-04-272江苏省南京市true
6孙尚香女161994-05-213false
7马超男191991-10-201黑龙江省哈尔滨市false
8赵云男231986-10-262浙江省杭州市false

本文的主要内容有:

  1. metric API的使用
  2. bucketing API的使用
  3. 两类API的嵌套使用

1. 聚合API

ES中的Aggregations API是从Facets功能基础上发展而来,官网正在进行替换计划,建议用户使用Aggregations API,而不是Facets API。ES中的聚合上可以分为下面两类:

  • metric(度量)聚合:度量类型聚合主要针对的number类型的数据,需要ES做比较多的计算工作
  • bucketing(桶)聚合:划分不同的“桶”,将数据分配到不同的“桶”里。非常类似sql中的group语句的含义。
    metric既可以作用在整个数据集上,也可以作为bucketing的子聚合作用在每一个“桶”中的数据集上。当然,我们可以把整个数据集合看做一个大“桶”,所有的数据都分配到这个大“桶”中。

ES中的聚合API的调用格式如下:

"aggregations" : {                  // 表示聚合操作,可以使用aggs替代
    "<aggregation_name>" : {        // 聚合名,可以是任意的字符串。用做响应的key,便于快速取得正确的响应数据。
        "<aggregation_type>" : {    // 聚合类别,就是各种类型的聚合,如min等
            <aggregation_body>      // 聚合体,不同的聚合有不同的body
        }
        [,"aggregations" : { [<sub_aggregation>]+ } ]? // 嵌套的子聚合,可以有0或多个
    }
    [,"<aggregation_name_2>" : { ... } ]* // 另外的聚合,可以有0或多个
}

1.1 度量类型(metric)聚合

(1)Min Aggregation

最小值查询,作用于number类型字段上。查询2班最小的年龄值。

curl -XPOST "192.168.1.101:9200/student/student/_search" -d 
'
{
  "query": {         // 可以先使用query查询得到需要的数据集
    "term": {
      "classNo": "2"
    }
  },
  "aggs": {
    "min_age": {
      "min": {
        "field": "age"
      }
    }
  }
}
'

查询结果为:

{
  "took": 19,                     // 前面部分数据与普通的查询数据相同
  "timed_out": false,
  "_shards": {
    "total": 5,
    "successful": 5,
    "failed": 0
  },
  "hits": {
    "total": 3,
    "max_score": 1.4054651,
    "hits": [
      {
        "_index": "student",
        "_type": "student",
        "_id": "2",
        "_score": 1.4054651,
        "_source": {
          "studentNo": "2",
          "name": "关羽",
          "male": "男",
          "age": "22",
          "birthday": "1987-08-23",
          "classNo": "2",
          "isLeader": "false"
        }
      },
      {
        "_index": "student",
        "_type": "student",
        "_id": "8",
        "_score": 1,
        "_source": {
          "studentNo": "8",
          "name": "赵云",
          "male": "男",
          "age": "23",
          "birthday": "1986-10-26",
          "classNo": "2",
          "isLeader": "false"
        }
      },
      {
        "_index": "student",
        "_type": "student",
        "_id": "5",
        "_score": 0.30685282,
        "_source": {
          "studentNo": "5",
          "name": "诸葛亮",
          "male": "男",
          "age": "18",
          "birthday": "1992-04-27",
          "classNo": "2",
          "isLeader": "true"
        }
      }
    ]
  },
  "aggregations": {                    // 聚合结果
    "min_age": {                       // 前面输入的聚合名
      "value": 18,                     // 聚合后的数据
      "value_as_string": "18.0"
    }
  }
}

上面的聚合查询有两个要注意的点:

可以通过query先过滤数据
返回的结果会包含聚合操作所作用的数据全集
有时候我们对作用的数据全集并不太敢兴趣,我们仅仅需要最终的聚合结果。可以通过查询类型(search_type)参数来实现这个需求。下面查询出来的数据量会大大减少,ES内部也会在查询时减少一些耗时的步骤,所以查询效率会提高。

curl -XPOST "192.168.1.101:9200/student/student/_search?search_type=count" -d     // 注意这里的search_type=count
'
{
  "query": {             // 可以先使用query查询得到需要的数据集
    "term": {
      "classNo": "2"
    }
  },
  "aggs": {
    "min_age": {
      "min": {
        "field": "age"
      }
    }
  }
}
'

本次的查询结果为:

{
...

"aggregations": {                    // 聚合结果
    "min_age": {                       // 前面输入的聚合名
      "value": 18,                     // 聚合后的数据
      "value_as_string": "18.0"
    }
  }
}

(2)Max Aggregation

最大值查询。下面查询2班最大的年龄值,查询结果为23。

curl -XPOST "192.168.1.101:9200/student/student/_search?search_type=count" -d 
'
{
  "query": {
    "term": {
      "classNo": "2"
    }
  },
  "aggs": {
    "max_age": {
      "max": {
        "field": "age"
      }
    }
  }
}
'

(3)Sum Aggregation

数值求和。下面统计查询2班的年龄总和,查询结果为63。

curl -XPOST "192.168.1.101:9200/student/student/_search?search_type=count" -d 
'
{
  "query": {
    "term": {
      "classNo": "2"
    }
  },
  "aggs": {
    "sum_age": {
      "sum": {
        "field": "age"
      }
    }
  }
}
'

(4)Avg Aggregation

计算平均值。下面计算查询2班的年龄平均值,结果为21。

curl -XPOST "192.168.1.101:9200/student/student/_search?search_type=count" -d 
'
{
  "query": {
    "term": {
      "classNo": "2"
    }
  },
  "aggs": {
    "avg_age": {
      "avg": {
        "field": "age"
      }
    }
  }
}
'

(5)Stats Aggregation

统计查询,一次性统计出某个字段上的常用统计值。下面对整个学校的学生进行简单地统计。

curl -XPOST "192.168.1.101:9200/student/student/_search?search_type=count" -d 
'
{
  "aggs": {
    "stats_age": {
      "stats": {
        "field": "age"
      }
    }
  }
}
'

查询结果为:

{
  ...                     // 次要数据省略

  "aggregations": {
    "stats_age": {
      "count": 8,        // 含有年龄数据的学生计数
      "min": 16,         // 年龄最小值
      "max": 24,         // 年龄最大值
      "avg": 20.125,     // 年龄平均值
      "sum": 161,        // 年龄总和
      "min_as_string": "16.0",
      "max_as_string": "24.0",
      "avg_as_string": "20.125",
      "sum_as_string": "161.0"
    }
  }
}

(6)Top hits Aggregation

取符合条件的前n条数据记录。下面查询全校年龄排在前2位的学生,仅需返回学生姓名和年龄。

curl -XPOST "192.168.1.101:9200/student/student/_search?search_type=count" -d 
{
  "aggs": {
    "top_age": {
      "top_hits": {
        "sort": [               // 排序
          {
            "age": {            // 按年龄降序
              "order": "desc"
            }
          }
        ],
        "_source": {
          "include": [           // 指定返回字段
            "name",
            "age"
          ]
        },
        "size": 2                 // 取前2条数据
      }
    }
  }
}

返回结果为:

{
  ...

  "aggregations": {
    "top_age": {
      "hits": {
        "total": 9,
        "max_score": null,
        "hits": [
          {
            "_index": "student",
            "_type": "student",
            "_id": "1",
            "_score": null,
            "_source": {
              "name": "刘备",
              "age": "24"
            },
            "sort": [
              24
            ]
          },
          {
            "_index": "student",
            "_type": "student",
            "_id": "8",
            "_score": null,
            "_source": {
              "name": "赵云",
              "age": "23"
            },
            "sort": [
              23
            ]
          }
        ]
      }
    }
  }
}

1.2 桶类型(bucketing)聚合

(1)Terms Aggregation

按照指定的1或多个字段将数据划分成若干个小的区间,计算落在每一个区间上记录数量,并按指定顺序进行排序。下面统计每个班的学生数,并按学生数从大到小排序,取学生数靠前的2个班级。

curl -XPOST "192.168.1.101:9200/student/student/_search?search_type=count" -d 
'
{
  "aggs": {
    "terms_classNo": {
      "terms": {
        "field": "classNo",            // 按照班号进行分组
        "order": {                     // 按学生数从大到小排序
          "_count": "desc"
        },
        "size": 2                      // 取前两名
      }
    }
  }
}
'

值得注意的,取得的前2名的学生数实际上是一个近似值,ES的实现方式参见这里。如果想要取得精确值,可以不指定size值,使其进行一次全排序,然后在程序中自行去取前2条记录。当然,这样做会使得ES做大量的排序运算工作,效率比较差。

(2)Range Aggregation

自定义区间范围的聚合,我们可以自己手动地划分区间,ES会根据划分出来的区间将数据分配不同的区间上去。下面将全校学生按照年龄划分为5个区间段:16岁以下、16~18、19~21、22~24、24岁以上,要求统计每一个年龄段内的学生数。

curl -XPOST "192.168.1.101:9200/student/student/_search?search_type=count" -d 
'
{
  "aggs": {
    "range_age": {
      "range": {
        "field": "age",
        "ranges": [
          {
            "to": 15
          },
          {
            "from": "16",
            "to": "18"
          },
          {
            "from": "19",
            "to": "21"
          },

          {
            "from": "22",
            "to": "24"
          },
          {
            "from": "25"
          }
        ]
      }
    }
  }
}
'

(3)Date Range Aggregation

时间区间聚合专门针对date类型的字段,它与Range Aggregation的主要区别是其可以使用时间运算表达式。主要包括+(加法)运算、-(减法)运算和/(四舍五入)运算,每种运算都可以作用在不同的时间域上面,下面是一些时间运算表达式示例。

now+10y:表示从现在开始的第10年。
now+10M:表示从现在开始的第10个月。
1990-01-10||+20y:表示从1990-01-01开始后的第20年,即2010-01-01。
now/y:表示在年位上做舍入运算。今天是2015-09-06,则这个表达式计算结果为:2015-01-01。说好的rounding运算呢?结果是做的flooring运算,不知道为啥,估计是我理解错了-_-!!
下面查询25年前及更早出生的学生数。

curl -XPOST "192.168.1.101:9200/student/student/_search?search_type=count" -d 
'
{
  "aggs": {
    "range_age": {
      "date_range": {
        "field": "birthday",
        "ranges": [
          {
            "to": "now-25y"
          }
        ]
      }
    }
  }
}
'

(4)Histogram Aggregation

直方图聚合,它将某个number类型字段等分成n份,统计落在每一个区间内的记录数。它与前面介绍的Range聚合非常像,只不过Range可以任意划分区间,而Histogram做等间距划分。既然是等间距划分,那么参数里面必然有距离参数,就是interval参数。下面按学生年龄统计各个年龄段内的学生数量,分隔距离为2岁。

curl -XPOST "192.168.1.101:9200/student/student/_search?search_type=count" -d 
'
{
  "aggs": {
    "histogram_age": {
      "histogram": {
        "field": "age",
        "interval": 2,               // 距离为2
        "min_doc_count": 1           // 只返回记录数量大于等于1的区间
      }
    }
  }
}
'

(5)Date Histogram Aggregation

时间直方图聚合,专门对时间类型的字段做直方图聚合。这种需求是比较常用见得的,我们在统计时,通常就会按照固定的时间断(1个月或1年等)来做统计。下面统计学校中同一年出生的学生数。

curl -XPOST "192.168.1.101:9200/student/student/_search?search_type=count" -d 
'
{
  "aggs": {
    "data_histogram_birthday": {
      "date_histogram": {
        "field": "birthday",
        "interval": "year",              // 按年统计
        "format": "yyyy"                 // 返回结果的key的格式
      }
    }
  }
}
'

返回结果如下,可以看到由于上面的”format”: “yyyy”,所以返回的key_as_string只返回年的信息。

{
  "buckets": [
    {
      "key_as_string": "1985",
      "key": 473385600000,
      "doc_count": 1
    },
    {
      "key_as_string": "1986",
      "key": 504921600000,
      "doc_count": 1
    },
    {
      "key_as_string": "1987",
      "key": 536457600000,
      "doc_count": 1
    },
    {
      "key_as_string": "1989",
      "key": 599616000000,
      "doc_count": 1
    },
    {
      "key_as_string": "1990",
      "key": 631152000000,
      "doc_count": 1
    },
    {
      "key_as_string": "1991",
      "key": 662688000000,
      "doc_count": 1
    },
    {
      "key_as_string": "1992",
      "key": 694224000000,
      "doc_count": 1
    },
    {
      "key_as_string": "1994",
      "key": 757382400000,
      "doc_count": 1
    }
  ]
}

(6)Missing Aggregation

值缺损聚合,它是一类单桶聚合,也就是最终只会产生一个“桶”。下面统计学生信息中地址栏缺损的记录数量。由于只有学号为6的孙尚香的地址缺损,所以统计值为1。

curl -XPOST "192.168.1.101:9200/student/student/_search?search_type=count" -d 
'
{
  "aggs": {
    "missing_address": {
      "missing": {
        "field": "address"
      }
    }
  }
}
'

1.3 嵌套使用

前面已经说过,聚合操作是可以嵌套使用的。通过嵌套,可以使得metric类型的聚合操作作用在每一“桶”上。我们可以使用ES的嵌套聚合操作来完成稍微复杂一点的统计功能。下面统计每一个班里最大的年龄值。

curl -XPOST "192.168.1.101:9200/student/student/_search?search_type=count" -d
'
{
  "aggs": {
    "missing_address": {
      "terms": {
        "field": "classNo"
      },
      "aggs": {                 // 在这里嵌套新的子聚合
        "max_age": {
          "max": {              // 使用max聚合
            "field": "age"
          }
        }
      }
    }
  }
}
'

返回结果如下:

{
  "buckets": [
    {
      "key": "1",               // key是班级号
      "doc_count": 3,           // 每个班级内的人数
      "max_age": {              // 这里是我们指定的子聚合名
        "value": 24,            // 每班的年龄值
        "value_as_string": "24.0"
      }
    },
    {
      "key": "2",
      "doc_count": 3,
      "max_age": {
        "value": 23,
        "value_as_string": "23.0"
      }
    },
    {
      "key": "3",
      "doc_count": 1,
      "max_age": {
        "value": 20,
        "value_as_string": "20.0"
      }
    },
    {
      "key": "4",
      "doc_count": 1,
      "max_age": {
        "value": 16,
        "value_as_string": "16.0"
      }
    }
  ]
}

2. 总结

本文介绍了ES中的一些常用的聚合API的使用,包括metric、bucketing以及它们的嵌套使用方法。掌握了这些API就可以完成简单的数据统计功能,更多的API详见官方文档。前面的博客中都是介绍了ES的Rest API,接下来的文章中将会介绍Java API的使用,使用Java API可以实现前面介绍的所有API的功能。

原文转载自:
http://blog.youkuaiyun.com/xialei199023/article/details/48298635

使用aggregation API扩展你的kubernetes API Kubernetes apiserver aggregation AA 是Kubernetes提供的一种扩展API的方法,目前并没有GA众所周知,kubernetes扩展API的方法大概为三种:CRD、AA、手动扩展源码。根据CNCF分享中Min Kim说的AA更关注于实践,而用户无需了解底层的原理,这里使用过 , 的用户是很能体会到这点。官方也给出了CRD与AA的区别要想很好的使用AA,就需要对kubernetes与 AA 之间认证机制进行有一定的了解,这里涉及到一些概念在下面的说明中,所有出现的API 阅读详情

相关推荐

Elasticsearch内存

Elasticsearch内存管理核心解析:本文深入分析了Elasticsearch的两层内存架构,包括Lucene层的操作系统缓存(负责索引存储)和Elasticsearch层的JVM堆内存(处理分布式协调与缓存)。关键内存组件涵盖FieldDataCache、QueryCache等堆内存结构,以及Lucene的PageCache等系统缓存。文章提供了详细的内存监控方法(通过_nodes/stats等API)和问题排查流程图,并给出5条最佳实践:设置50%堆内存、建立监控体系、规避FieldData滥用、

ywl470812087的博客 10万+

ElasticSearch学习笔记 | Aggregations执行聚合

本文测试数据为官方提供的测试数据,导入方法在学习笔记本章节第一篇中:https://blog.youkuaiyun.com/qq_20051535/article/details/113242821 Aggregations执行聚合 聚合提供了从数据中分组和提取数据的能力。最简单的聚合方法大致等于 SQL GROUP BY 和 SQL 聚合函数。在 Elasticsearch 中,您有执行索返回 hits(命中结果),并且同时返回聚合结果,把一个响应中的所有hits(命中结果)隔开的能力。这是非常强大且有效的,您可以

大灰狼的小绵羊哥哥的博客 496

ElasticSearch和mysql对比

本文系统介绍了ElasticSearch的核心概念与基础操作。首先阐述了其作为分布式搜索引擎的优势,包括实时搜索、全文检索和可扩展架构;接着详细解析了索引、文档、分片等核心概念,并与关系数据库进行类比;然后提供了从环境搭建到CRUD操作的完整实践指南,包含丰富的REST API调用示例;最后总结了ElasticSearch在日志分析、商品搜索等场景的应用价值,并指出了聚合分析、集群调优等进阶学习方向。文章强调理论结合实践,帮助读者快速掌握这一强大搜索工具的基础使用。

ywl470812087的博客 2469

Elasticsearch学习(十三)————Java聚合查询文档(Aggregations Query API)

Aggregations Query API 1. package com.qin.common.util.elasticsearch.query; import org.apache.http.HttpHost; import org.elasticsearch.action.search.SearchRequest; import org.elasticsearch.action.searc...

qq_42513284的博客 697

Kibana 6.2.4:Elasticsearch的数据可视化与分析

Kibana允许用户通过高级定制选项来增强其可视化组件的功能。这些定制可以包括自定义样式、主题、添加注释以及使用脚本增强数据展示。高级定制选项包括:样式定制:改变图表颜色、字体大小、边框样式等。注释和标记:在图表中添加注释,标记特定的事件或数据点。脚本定制:使用Kibana表达式语言或JavaScript来编写自定义脚本,增强数据处理和展示能力。Kibana通过其直观的用户界面为用户提供了强大的搜索能力。

weixin_35826166的博客 755

OS实验xv6 6.S081 开坑

OS实验xv6 6.S081 开坑 终于把xv6 2019 6.S081做完了,网络部分没有写,因为有计网实验了。怎么说呢,xv6的坑有点多,能做完多亏了:和我同学ljj交流,参考RedemptionC老哥的博客(他写的非常详细,遗憾的是,他好像没有写mmap),再者就是参考这位老哥的做法(没有源码,写得不是特别详细,不过有借鉴作用,mmap就是借鉴了他的思想)……废话不多说了,直接开始。 实验指导 首推RedemptionC的博客 这位老哥的个人博客 xv6 6.S081官网(后面的实验都要参考官网

不定期更新系统使用、编程小技巧,哔哩哔哩账号:https://space.bilibili.com/399455629,欢迎关注 4493

elasticsearch6聚合排序总结 - JavaAPI

序言:         近来一直在javaAPI对ES数据进行统计分析, 中间也遇到不少问题, 本篇文章只针对聚合过程中的排序方法进行总结 例如:select  avg(age) as avg_age from table group by gender;   聚合的两种排序方式        1. 按组内字段排序: 分组后按组内数据某个字段进行排序        2. 按聚合后指标排...

tiansheng1225的博客 9439

FANUC机器人电弧跟踪功能深度解析:从电流采样原理到ROBOGUIDE仿真避坑指南

本文深度解析FANUC机器人电弧跟踪技术,从电流采样原理到ROBOGUIDE仿真避坑指南,详细介绍了电流波形分析、实时补偿机制及现场调试技巧。针对工业焊接中的常见问题,提供从底层原理到高阶应用的解决方案,帮助工程师优化自动化焊接质量。

weixin_31785177的博客 547

Elastic:开发者上手指南

你们好,我是Elastic的刘晓国。如果大家想开始学习Elastic的话,那么这里将是你理想的学习园地。在我的博客几乎涵盖了你想学习的许多方面。在这里,我来讲述一下作为一个菜鸟该如何阅读我的这些博客文章。 我们可以按照如下的步骤来学习: 1)Elasticsearch简介:对Elasticsearch做了一个简单的介绍 2)Elasticsearch中的一些重要概念:cluster,n..........................................................

Elastic 中国社区官方博客 17万+

移动硬盘报错0x80070570?5分钟搞定CHKDSK修复(附详细参数说明)

本文针对移动硬盘报错0x80070570问题,提供了详细的CHKDSK修复方法。通过5分钟核心修复流程,指导用户使用系统自带工具快速修复文件系统逻辑错误,恢复硬盘访问。文章还深入解析了CHKDSK参数,并提供了备选数据恢复方案与日常防护建议。

app77的博客 233

MPU6050数据融合避坑指南:当欧拉角遇到万向节死锁,我们该如何处理?

本文深入探讨了MPU6050在姿态解算中遇到的欧拉角万向节死锁问题,提供了四元数解决方案及工程实践策略。通过分析死锁现象的本质,介绍四元数的优势与实现方法,并给出必须使用欧拉角时的三种应对方案,帮助开发者有效规避数据跳变和解算失效问题。

weixin_30415113的博客 541

Elasticsearch的多种查询方式

Elasticsearch支持多种查询方式,包括:match查询、term查询、bool查询、range查询、prefix查询、wildcard查询、regexp查询等。这些查询方式可以组合使用,以实现复杂的搜索需求。

ᶻᶻᶻ 枕星河的博客 2万+

半导体行业周期分析:库存、需求与复苏路径深度解读

半导体行业作为现代科技产业的基石,其周期性波动受供需关系、库存水平和宏观经济等多重因素影响。从技术原理上看,行业景气度通常通过库存周转天数、晶圆厂产能利用率等核心指标进行监测,这些指标反映了产业链各环节的健康状况。在工程实践中,理解这些指标有助于企业进行库存管理和产能规划,从而提升运营效率。当前,半导体市场正经历结构性分化,其中**库存周转天数**和**晶圆厂产能利用率**成为判断市场拐点的关键。在应用场景上,汽车电子、人工智能等领域需求相对稳健,而消费电子则面临较大压力。本文聚焦于半导体行业的周期特征,探

weixin_29549793的博客 682

elasticsearch aggregations_Elasticsearch聚合的嵌套桶如何排序

欢迎访问我的GitHubhttps://github.com/zq2599/blog_demos内容:原创文章分类汇总及配套源码,涉及Java、Docker、K8S、Devops等关于嵌套桶在elasticsearch的聚合查询中,经常对聚合的数据再次做聚合处理,例如统计每个汽车品牌下的每种颜色汽车的销售额,这时候DSL中就有了多层aggs对象的嵌套,这就是嵌套桶(此名称来自《Elast...

weixin_39782752的博客 803

Android System Slice应用加载分析,及启用Slice后,锁屏日期第一次开机正常显示,但后面锁屏不显示问题分析

最近发现Android P上锁屏界面,日期不显示,发现从P开始后,出现了Slice来允许应用以模块化,可交互的方式,插入多个使用场景。Android P的system UI 也使用到了这一特性,表现为锁屏时间,日期,勿扰图标,闹钟等。 如何使用Slice 以System UI中KeyguardSliceView.java来说明它的使用方法 首先,我们打开System UI 的mk 文件,可以看到以...

qq_33595823的博客 3033

IBIS模型中的Pullup和Pulldown曲线详解:如何避免信号完整性设计中的常见错误

本文深入解析IBIS模型中Pullup和Pulldown曲线的关键作用,揭示其在信号完整性设计中的黄金法则。通过详细分析曲线特性、常见误区及验证方法,帮助工程师避免设计错误,优化高速PCB设计。文章还展示了曲线数据在动态终端匹配、串扰预测和电源完整性分析中的高级应用,提升设计效率和可靠性。

weixin_30275415的博客 447

ES aggregation详解

aggregation分类 aggregations —— 聚合,提供了一种基于查询条件来对数据进行分桶、计算的方法。有点类似于 SQL 中的 group by 再加一些函数方法的操作。聚合可以嵌套,由此可以组成复杂的操作(Bucketing聚合可以包含sub-aggregation)。聚合整体上可以分为 3 类:1. Bucketing:桶分聚合:此类聚合执行的是对文档分组的操作,把满足相关特性的文档分到一个桶里,即桶分。输出结果往往是一个个包含多个文档的桶。 此类聚合会有一个关键字(field、scri

thlzjfefe的博客 5052

YOLO26涨点改进| TGRS 2026 | 独家创新首发、注意力改进篇| 引入CSSCA频谱-空间交叉注意力,含多种创新改进,小目标检测、图像分割、高光谱图像分类、语义分割任务任务涨点

🔥本文提出CSSCA(频谱-空间交叉注意力)模块,通过中心像素引导的光谱与空间交叉注意力机制,有效提升YOLO26模型的特征表达能力。该模块实现了光谱与空间信息的协同优化,能够自适应强化关键通道与重要空间区域,增强模型对小目标和复杂场景的感知能力。文章详细介绍了CSSCA的网络结构、工作原理及四大优势,包括精准特征表达、协同信息优化、小样本适应性和轻量化设计。同时提供了完整的代码实现和四种改进方案的YAML配置文件,包括基础版、增强版、C3k2融合版和C2PSA融合版,为YOLO26模型的性能提升

Ai缝合怪、助力小伙伴高效发论文 264

Elasticsearch聚合----aggregations的简单使用

ES中的aggregations提供了数据分析能力,比如从数据中分组和提取数据的能力。最简单的聚合方法大致等于 SQL中GROU BY和SQL中的聚合函数。在 Elasticsearch 中,执行聚合返回 hits(命中结果)的同时还返回聚合结果。

idooy的学习笔记 1559

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Elasticsearch:aggregation 介绍

聚合(aggregation)功能集是整个Elasticsearch产品中最令人兴奋和有益的功能之一,主要是因为它提供了一个非常有吸引力对之前的facets的替代。 在本教程中,我们将解释Elasticsearch中的聚合(aggregation)并逐步介绍一些示例。 我们比较了指标聚合和存储桶聚合,并展示了如何利用聚合嵌套(对于facets而言这是不可能的)。 欢迎您在本文中复制所有示例代码。......

Elastic 中国社区官方博客 7172

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

es AggregationBuilders 聚合查询

在项目中遇到一块关于es的多条件聚合的代码,如下: >AggregationBuilders > .terms("agg_name") > .field("name") > .size(Integer.MAX_VALUE) > .subAggregation(AggregationBuilders > .topHits("top") > .sort("time",SortOrade.DESC

qq_1763467007的博客 1万+

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

es 分组后排序 再分页

es 分组 聚合 分页 排序

gbh666666的博客 2957

ES Aggs count distinct group by聚合排序查询

ES Aggs count distinct group by聚合排序查询

qq_40985985的博客 1893

Elasticsearch Java API(十一)--聚合(aggregations)

Elasticsearch分析聚合介绍了分析聚合的REST命令,这篇博客介绍一下如何使用Java API。一、准备数据测试数据请参考我的上一篇博客:Elasticsearch分析聚合。二、需求查询title中包含关键字”程序”的文档,统计查询按编程语言分组,统计每组的文档数量。三、REST命令行REST命令行如下,有三部分,query查询所有title中包含关键词程序的文档,size指定返回结果中文

1.02^365=1377.41 1万+

从零学Elasticsearch系列——深入搜索(Query、Filter、Aggregation)

搜索方式 搜索有两种方式:一种是通过URL参数进行搜索,另一种是通过DSL(Request Body)进行搜索 DSL:Domain Specified Language,特定领域语言 使用请求体可以让你的JSON数据以一种更加可读和更加富有展现力的方式发送。 导入测试数据集 # 批量插入测试数据 POST /zpark/user/_bulk {&quot;index&quot;:{&quot;_id&quot;:1}} {&quot;nam...

高興 6407

ES 地理网格聚合,基于位置模糊搜索(热力图)

Geohash 简介 经纬度字段必须为 geo-point 类型 ES 经纬度类型,包含 "coordinate": { "lat": 39.90894, "lon": 116.82192, "geohash": "wx55435nkj9h", "fragment": true } 其中 geohash 字段 是经纬度经过二进制变化、合并和 Base32 编码得到的编码, 编码越长,位置也越精确。 geo

assember的博客 2053
上一篇: ELK第二篇:Elasticsearch基础知识
下一篇: ELK第七篇:spring-boot-starter-data-elasticsearch使用
牧竹子
博客等级 码龄17年 572粉丝 233原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值