当前位置: 首页 > news >正文

ES聚合,SQL查询

SQL查询


-- 多索引统计查询POST /_sql?format=txt
{"query": """SELECT COUNT(*) AS total,COUNT( rule_name) AS VALUE,rule_name AS NAME FROM "rule_log*,siem_log*" GROUP BY rule_name"""
}--  count 统计查询POST /_sql?format=txt
{"query": """SELECT rule_name,count(1) FROM "rule_log*" GROUP BY rule_name"""
}-- 条件统计查询POST /_sql?format=txt
{"query": """SELECT rule_name,log_model,COUNT(level.keyword = '严重' OR NULL) AS critical FROM rule_log GROUP BY rule_name,log_model"""
}-- list格式数据条件查询POST /_sql?format=txt
{"query": """SELECT logSourceName,logSourceIp,logSourceCitypeName,count(1) FROM "siem-event-2024.08.21" where depart_uuid in('element1','element333')   GROUP BY logSourceName,logSourceIp,logSourceCitypeName """
}-- 时间格式化查询POST /_sql?format=txt
{"query": """SELECT DATETIME_FORMAT("@timestamp",'yyyy-MM-dd') AS format_time,count(1) FROM "windows-log*" group by DATETIME_FORMAT("@timestamp",'yyyy-MM-dd') order by format_time desc """
}

聚合查询

ES常用的桶聚合如下:

Terms聚合 - 类似SQL的group by,根据字段唯一值分组
Histogram聚合 - 根据数值间隔分组,例如: 价格按100间隔分组,0、100、200、300等等
Date histogram聚合 - 根据时间间隔分组,例如:按月、按天、按小时分组
Range聚合 - 按数值范围分组
Elasticsearch 指标聚合(metrics)-函数
ES指标聚合,就是类似SQL的统计函数,指标聚合可以单独使用,也可以跟桶聚合一起使用。

常用的统计函数如下:

Value Count - 类似sql的count函数,统计总数
Cardinality - 类似SQL的count(DISTINCT 字段), 统计不重复的数据总数
Avg - 求平均值
Sum - 求和
Max - 求最大值
Min - 求最小值

POST rule_log/_search
{"size": 1, "aggs": {"聚合名称": {"terms": {"field": "rule_name.keyword","size": 10,"order": {"_key": "desc"}},"aggs" : {"type_count" : { "terms": { "field" : "level.keyword" }}}}}
}POST  windows-log-*/_search
{"size": 1, "query": {"bool": {"must": [{"range": {"@timestamp": {"gte": "2024-08-15T16:51:38","lte": "2024-08-15T17:21:38"}}}]}}, "aggs": {"聚合名称": {"terms": {"field": "host.ip","size": 10,"order": {"_key": "desc"}},"aggs" : {"type_count" : { "terms": { "field" : "model_name" }}}}}
}GET /siem_log/_search
{"size": 0,"query": {"bool": {"filter": [{}]}}, "aggs": {"date_histogram_aggs": {"date_histogram": {"field": "createTime","interval": "day","format": "yyyy-MM-dd","order": {"_key": "desc"}}}}
}POST siem_log/_search
{"size": 0, "aggs" : {"login_time" : { "date_histogram": { "field" : "createTime" ,"format": "yyyy-MM-dd","fixed_interval": "1d","offset": -28800000,"order": {"_key": "asc"},"keyed": false,"min_doc_count": 0,"extended_bounds": {   "min": "now/d", "max": "now/d"}}}}
}GET /sales/_search?size=0
{"aggs": {"types_count": { // 聚合查询的名字,随便取个名字"value_count": { // 聚合类型为:value_count"field": "type" // 计算type这个字段值的总数}}}
}等价SQLselect count(type) from sales

http://www.mrgr.cn/news/5109.html

相关文章:

  • gitlab迁移至新的服务器
  • python 异常处理详解带(3分钟速通)
  • 大数据与大模型技术赋能:革新智能客服系统知识库管理的策略与实践
  • 【具体数学 Concrete Mathematics】1.1 递归问题 讲义
  • GitHub 官方 CLI 客户端发布 2.55.0
  • 软件测试-自动化测试
  • vue实现卡片遮罩层交互式功能
  • 倍内菲新品发布揭示宠物营养新纪元,引领行业保驾护航
  • 什么是天线OTA,怎么通过OTA数据评估产品射频环境情况
  • 004快速排序-python实现
  • FFmpeg的入门实践系列三(基础知识)
  • Docker微服务实战Demo
  • 自动化测试框架pytest+allure+requests
  • (待更)将windows11配置成生产力高的电脑:当计算机新生的你拿到新电脑时该配置哪些东西(python、mysql、git)
  • Linux基础I/O之文件缓冲区
  • 无人驾驶,并非无人之地
  • MFC在对话框中实现打印和打印预览
  • 配置ROS环境
  • 深度剖析C++string(上篇)
  • 瑞吉外卖--登录退出功能的实现