当前位置: 首页 > 知识库问答 >
问题:

sql到es:获取agg上的限制页和订单结果

计泉
2023-03-14
SELECT
    max( timestamp ) AS first_time,
    min( timestamp ) AS last_time,
    src_ip,
    threat_target ,
    count(*) as count
FROM
    traffic 
GROUP BY
    src_ip,
    threat_target

ORDER BY
  first_time desc

LIMIT 0 ,10

我想得到这个结果,但我不知道如何获得限制大小,以及在哪里使用排序

json prettyprint-override">{
  "size": 0,
  "aggregations": {
    "src_ip": {
      "aggregations": {
        "threat_target": {
          "aggregations": {
            "last_time": {
              "max": {
                "field": "`timestamp`"
              }
            },
            "first_time": {
              "min": {
                "field": "`timestamp`"
              }
            }
          },
          "terms": {
            "field": "threat_target.keyword"
          }
        }
      },
      "terms": {
        "field": "src_ip.keyword"
      }
   
    }
  }
}

共有1个答案

陆俊迈
2023-03-14
  1. 弹性搜索通常不支持聚合分页,但是,复合聚合提供了一种对聚合分页的方法

与其他多桶聚合不同,复合聚合可用于有效地分页来自多级聚合的所有桶。

摘自复合聚合ES文档。

检查:这个

除了“ORDER BY first\U time desc”,下面的查询应该可以正常运行。我认为除了分组字段(src\u ip,threat\u target)之外,不可能在任何字段上排序。

 GET traffic/_search
 {
 "size": 0,
 "aggs": {
 "my_bucket": {
 "composite": {
 "size": 2,  //<=========== PAGE SIZE
 /*"after":{   // <========== INCLUDE THIS FROM Second request onwards, passing after_key of the last output here for next page
   "src_ip" : "1.2.3.5",
   "threat_target" : "T3"
 },*/
 "sources": [
   {

     "src_ip": {
       "terms": {
         "field": "source_ip",
         "order": "desc"
       }
     }
   },
   {
     "threat_target": {
       "terms": {
         "field": "threat_target"
       }
     }
   }
 ]
 },
"aggs": {
 "first_time": {
   "max": {
     "field": "first_time"
   }
 }
 }
 }
 }
 }
 类似资料:
  • 我将从我的WoocCommerce商店定制感谢页面。为此,我加了一句布兰科谢谢。php进入WooCommerce签出目录。 我试过这个密码 但是变量$order\u id为空。 有人知道我是如何在感谢页面上获得订单标识的吗?

  • 问题内容: 考虑这个SQL查询 该查询将仅在字段中返回一个值。 有没有一种方法可以在不使用a并指向返回数组的第一个值的情况下获取该值? 问题答案: 将允许您直接从结果集中提取值,而不必使用 提取 方法。这是一个非常简单的示例,说明如何使用它来获取单个值: 该函数有三个参数。第一个是结果集本身,第二个是行索引,第三个是字段索引。我只使用前两个参数,因为第三个参数默认为0,即返回第一个字段。

  • 问题内容: 我想知道是否可以限制SQL请求的结果? 例如,最多只返回以下内容的50行: 谢谢。 问题答案: 是的,这是可能的。这在数据库引擎之间有所不同。 Postgres: SQL Server: …

  • 因此,我正在对最新的DynamoDBEnhancedAsyncClient使用分页。 然而,在上应用限制()时,它并没有限制单个页面上的项目。示例:如果我通过仍然在中显示2条记录。不确定是以项目数为参数还是以页数为参数。如果是它的页面,有没有办法限制每页的数量?我们知道DDB创建的页面最大大小为1MB。但我们的json记录以字节为单位,这意味着每页将获取的记录。这不是效率低下吗?是否可以限制每页的

  • 说明 用于获取平台商城订单 请求地址 http://api.dc78.cn/Api/mall_list_order 请求方式 GET 请求参数 GET参数 描述 new=1 ,设置为1获取新订单(状态为0,1),如不设置则返回全部订单 size=30,一次分页的数量,默认30 page=1,获取分页的页码 POST数据 描述 无 返回 { "data": { "count": "35", "siz

  • 请求地址 http://api.dc78.cn/Api/do_get_order 请求方式 GET 请求参数 参数 参数名称 描述 id 订单号 订单号,取自上一协议返回值 getpay=1 获取订单支付信息 获取订单支付信息 ,用于订单有支付时,一次性获取订单信息和支付信息 invoice=1 是否单独推送发票信息 设置该参数备注(memo字段)与发票信息(invoice字段)分别单独显示,不设