首页 > 其他分享 >ES--DSL实现Bucket聚合语法

ES--DSL实现Bucket聚合语法

时间:2024-01-14 17:23:36浏览次数:23  
标签:count 聚合 -- Bucket DSL 文档 20 size

语法如下:

GET /hotel/_search
{
  "size": 0,  // 设置size为0,结果中不包含文档,只包含聚合结果
  "aggs": { // 定义聚合
    "brandAgg": { //给聚合起个名字
      "terms": { // 聚合的类型,按照品牌值聚合,所以选择term
        "field": "brand", // 参与聚合的字段
        "size": 20 // 希望获取的聚合结果数量
      }
    }
  }
}

聚合结果排序

默认情况下,Bucket聚合会统计Bucket内的文档数量,记为count,并且按照count降序排序。

我们可以指定order属性,自定义聚合的排序方式:

GET /hotel/_search
{
  "size": 0, 
  "aggs": {
    "brandAgg": {
      "terms": {
        "field": "brand",
        "order": {
          "_count": "asc" // 按照_count升序排列
        },
        "size": 20
      }
    }
  }
}
 

限定聚合范围

默认情况下,Bucket聚合是对索引库的所有文档做聚合,但真实场景下,用户会输入搜索条件,因此聚合必须是对搜索结果聚合。那么聚合必须添加限定条件。

我们可以限定要聚合的文档范围,只要添加query条件即可:

GET /hotel/_search
{
  "query": {
    "range": {
      "price": {
        "lte": 200 // 只对200元以下的文档聚合
      }
    }
  }, 
  "size": 0, 
  "aggs": {
    "brandAgg": {
      "terms": {
        "field": "brand",
        "size": 20
      }
    }
  }
}
 

 

标签:count,聚合,--,Bucket,DSL,文档,20,size
From: https://www.cnblogs.com/daitu66/p/17963924

相关文章

  • sklearn.preprocessing + keras
    sklearn.preprocessing+kerassklearn的数据预处理可以对业务数据进行规范化,和规范化后的数据还原,经常跟其他的模型配合使用。例如如下情况:https://github.com/influxdata/influxdb-client-python/blob/master/notebooks/stock-predictions.ipynb ExampleInfluxD......
  • 【论文阅读笔记】【OCR-End2End】 TextFormer: A Query-based End-to-End Text Spotte
    TextFormerarXiv:2306.03377读论文思考的问题论文试图解决什么问题?写作背景是什么?问题:如何设计一种更好的query-based的方法来同时实现端到端的场景文本检测能否利用弱监督数据(只有文本)进一步增强端到端模型的文本识别能力?背景:目前的端到端场景文本检测识别......
  • jmeter-配置元件&用户参数
    5.1.3.配置元件可以配置各种信息5.1.3.1配置全局参数-用户定义的变量在测试计划-》用户定义的变量中可以定义全局变量。在测试计划-》添加-》配置元件-》用户定义的变量中可以定义全局变量。还可以在线程组-》添加-》配置元件-》用户定义的变量中可以定义全局变量优先级:线......
  • dependency-check部署
    Linux安装部署(Ubuntu)WEB-UI项目地址,作者已经很久没更新了:https://github.com/he1m4n6a/dcweb从github上拉取下来gitclonehttps://github.com/he1m4n6a/dcweb.git之后本地机器会出现“dcweb”的文件夹:然后使用python2安装requirements.txt中的包。其中Django的版本最好......
  • Python面向对象之反射
    反射【一】什么是反射反射是一种程序可以访问、检测和修改其本身状态或行为的能力。在Python中,反射主要指通过字符串的形式操作对象的属性。【二】Python中的反射通过字符串的形式操作对象相关的属性。python中的一切事物都是对象(都可以使用反射)【三】反射方法class......
  • tryhackme-blog(博客)
    信息收集使用nmap对靶机进行端口扫描sudonmap-sT-sV-sC-O-p-blog.thm--max-rate10000根据题目的描述,这是一个博客,并且是wordpress站点,直接访问80端口使用wpscan对目标进行扫描,使用-eu枚举用户名wpscan--urlhttp://blog.thm-t50-eu通过扫描我们的到一些......
  • 电压测量
    ①问题点:因5G模组供电不正常,业务未检测到/dev/ttyUS0设备节点下发reboot,设备反复重启。首先排查了serdes的配置为正常,因此排查硬件电路。//底板上存在小圆点、三角符号通常是引脚11)首先测量3.8V电压是否正常,通过测量电感L8736(测试过程中发现丝印与原理图不一致问题)2)PCB给......
  • Redis Commands - GETRANGE SETRANGE
      Overwritespartofthestringstoredat key,startingatthespecifiedoffset,fortheentirelengthof value.Iftheoffsetislargerthanthecurrentlengthofthestringat key,thestringispaddedwithzero-bytestomake offset fit. 127.......
  • 路由器系列--【如何使用路由器组成一个局域网?】
    1.原理如图2.设置常用参数常用DNS:114.114.114.114、8.8.8.8常用子网掩码:255.255.255.0ip地址:和路由器网关地址保持在同一网段即可这样设置完之后,如果路由器能联网,几台电脑也能正常联网。如果路由器不能联网,几台电脑之间可以相互访问,也就是组成了一个大局域网。如果有一台......
  • 如何把将字符串中的数字转换成数字
    主要采用的是库函数的方法,isdigit,stoi.isdigit可以判断单个字符是否是数字,stoi可以将多个字符(多位数,复数)转换成数字。判断数字可以结合isdigit给出对应的函数。点击查看代码boolisNumber(conststd::string&token){//Checkifthetokenisanumber(posit......