elasticsearch - 如何查询最近 1 小时的数据并按时间排序?
问题描述
我在 ES 中有数据,例如:
@timestamp --> Timestamp field
record.hostIP
record.destIP
record.port
record.application
etc...
我想在 js 中的图表上绘制它,因此需要 X 轴上的时间和记录计数。<> Y 轴上。
下面的查询让我的文档按时间戳与计数(所有文档)排序。如果我需要最近 1 小时内的 record.application 计数,按时间戳从最早到最晚排序,我该怎么办?
GET _search
{
"size": "0",
"aggs": {
"oneHourTimeRange": {
"filter": {
"range": {
"@timestamp": {
"gte": "now-60m",
"lte": "now"
}
}
},
"aggs": {
"totalTraffic": {
"terms": {
"field": "@timestamp",
"size": 500,
"order": { "_key": "asc" }
}
}
}
}
}
}
谢谢。
解决方案
你的意思是record.application的唯一计数吗?您可能需要基数聚合。对于聚合,您将基数聚合嵌套在日期直方图中,它应该为您提供所需的内容。您应该将过滤条件移到外部,而不是聚合的一部分。
推荐阅读
- sql - OperationalError:尝试在 Google Cloud 应用程序上写入只读数据库
- node.js - 如何用变量替换所有内容?
- python - 在部分 COCO 数据集上训练 Detectron2
- json - 文件响应中的奇怪字符
- python - 将字符串 timedelta 转换为四舍五入的 timedelta 到完整的小时和分钟
- vba - 用于获取下拉列表数据的 Word VBA 代码
- angular - 只能取消第一次HTTP请求
- java - JSch 连接问题:JSchException:算法协商失败 - 即使安装了 JCE
- python - 在python中从没有文件类型的API端点保存图像
- django - Django:如何从模型关系创建查询集?