es6 dsl与sql对比

【README】

1.本文总结了 dsl 与 sql的对比写法;

2.es采用 7.2.1 版本;


【1】创建es索引

1)新建一个数据库事务执行日志索引

put localhost:9200/txlog

{   "mappings"  :{      "properties":{"APPNAME":{"type":"keyword"}            , "ITFNAME":{"type":"keyword"}, "DBNAME":{"type":"keyword"}, "EXE_COST":{"type":"integer"}, "EXE_TIMES":{"type":"integer"}			, "CREATE_TIME":{"type":"date", "format":"yyyy-MM-dd HH:mm:ss.SSS||yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"} }}       
}

字段含义:

序号字段名描述
1APPNAME应用名
2ITFNAME接口名
3DBNAME数据库名
4EXE_COST执行耗时
5EXE_TIMES        执行次数
6CREATE_TIME创建时间

字段类型为 keyword,即不分词,支持精确查找,不支持模糊查找;

补充: 如要分词,使用 text,即支持模糊查找;


【2】插入10条数据

采用 bulk 批量插入api;如下:

post localhost:9200/txlog/_doc/_bulk

{"index":{}}
{"APPNAME":"trcd1", "ITFNAME":"TRLOGQRY11", "DBNAME":"TRDB11", "EXE_COST":"11", "EXE_TIMES":"2", "CREATE_TIME":"2022-04-13 20:09:00"}
{"index":{}}
{"APPNAME":"trcd1", "ITFNAME":"TRLOGQRY11", "DBNAME":"TRDB11", "EXE_COST":"12", "EXE_TIMES":"3", "CREATE_TIME":"2022-04-14 20:09:00"}
{"index":{}}
{"APPNAME":"trcd1", "ITFNAME":"TRLOGQRY11", "DBNAME":"TRDB11", "EXE_COST":"13", "EXE_TIMES":"4", "CREATE_TIME":"2022-04-15 20:09:00"}
{"index":{}}
{"APPNAME":"trcd1", "ITFNAME":"TRLOGQRY11", "DBNAME":"TRDB11", "EXE_COST":"14", "EXE_TIMES":"5", "CREATE_TIME":"2022-04-16 20:09:00"}
{"index":{}}
{"APPNAME":"trcd2", "ITFNAME":"TRLOGQRY21", "DBNAME":"TRDB21", "EXE_COST":"15", "EXE_TIMES":"6", "CREATE_TIME":"2022-04-17 20:09:00"}
{"index":{}}
{"APPNAME":"trcd2", "ITFNAME":"TRLOGQRY21", "DBNAME":"TRDB21", "EXE_COST":"16", "EXE_TIMES":"7", "CREATE_TIME":"2022-04-17 20:09:00"}
{"index":{}}
{"APPNAME":"trcd2", "ITFNAME":"TRLOGQRY22", "DBNAME":"TRDB22", "EXE_COST":"17", "EXE_TIMES":"8", "CREATE_TIME":"2022-04-19 20:09:00"}
{"index":{}}
{"APPNAME":"trcd2", "ITFNAME":"TRLOGQRY23", "DBNAME":"TRDB01", "EXE_COST":"18", "EXE_TIMES":"9", "CREATE_TIME":"2022-04-20 20:09:00"}
{"index":{}}
{"APPNAME":"trcd2", "ITFNAME":"TRLOGQRY23", "DBNAME":"TRDB01", "EXE_COST":"19", "EXE_TIMES":"12", "CREATE_TIME":"2022-04-21 20:09:00"}
{"index":{}}
{"APPNAME":"trcd2", "ITFNAME":"TRLOGQRY23", "DBNAME":"TRDB01", "EXE_COST":"20", "EXE_TIMES":"22", "CREATE_TIME":"2022-04-22 20:09:00"}


【3】dsl与sql对比

【3.0】普通查询

sql:

select col1, col2 from table1 where col = '' ... limit 10

dsl如下:

{"_source":["APPNAME", "ITFNAME", "DBNAME", "EXE_COST"],"query":{"bool":{"filter":{"bool":{"must":[{"range":{"CREATE_TIME":{"gte":"2022-04-13 00:00:00", "lte":"2022-04-19 00:00:00"}}}]}}}}, "size":10    
}

【3.1】 范围查询

sql:

where  create_time > '' and create_time < ''

dsl如下:把 bool 封装在filter里面,不会计算分数,提高查询性能

{"query":{"bool":{"filter":{"bool":{"must":[{"range":{"CREATE_TIME":{"gte":"2022-04-13 00:00:00", "lte":"2022-04-15 00:00:00"}}}]}}}}
}

【3.2】聚合查询

1)根据appname 分组 求均值,求和;

sql如下:
 

select sum(exe_times) as sum_times, avg(exe_cost) as avg_cost 
from table 
where create_time > '#' and create_time < '#'
group by appname

dsl如下:(先分组,后求均值,求和)

{"query":{"bool":{"filter":{"bool":{"must":[{"range":{"CREATE_TIME":{"gte":"2022-04-13 00:00:00", "lte":"2022-04-19 00:00:00"}}}]}}}}, "size":0, "aggs":{"group_by_app":{"terms":{"field":"APPNAME"}, "aggs":{"sum_times":{"sum":{"field":"EXE_TIMES"}}, "avg_cost":{"avg":{"field":"EXE_COST"}}}}}
}

查询结果:

"aggregations": {"group_by_app": {"doc_count_error_upper_bound": 0,"sum_other_doc_count": 0,"buckets": [{"key": "trcd1","doc_count": 4,"avg_cost": {"value": 12.5},"sum_times": {"value": 14.0}},{"key": "trcd2","doc_count": 2,"avg_cost": {"value": 15.5},"sum_times": {"value": 13.0}}]}}

2)根据多个字段分组,如 应用名, 数据库名

sql:

select * from 
(select sum(exe_times) as sum_times, avg(exe_cost) as avg_cost from table where create_time > '#' and create_time < '#'group by appname,dbname
) a 
order by sum_times desc 
limit 3 

dsl:使用 painless 脚本 根据多个字段分组;

{"query":{"bool":{"filter":{"bool":{"must":[{"range":{"CREATE_TIME":{"gte":"2022-04-13 00:00:00", "lte":"2022-04-19 00:00:00"}}}]}}}}, "size":0, "aggs":{"group_by_app":{"terms":{"script":{"source":"doc['APPNAME'] + '#SPLIT#' + doc['DBNAME']", "lang":"painless"}, "size":"3", "min_doc_count":"1", "order":{"sum_times":"desc"}}, "aggs":{"sum_times":{"sum":{"field":"EXE_TIMES"}}, "avg_cost":{"avg":{"field":"EXE_COST"}}}}}
}

步骤:

  1. 按照 appname, dbname 分组;
  2. 聚合操作:求和,求均值;
  3. 按照 sum_times 倒排 聚合结果;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/329569.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

echarts line 去掉最外围方框_干货 | 关于射频芯片最详细解读

传统来说&#xff0c;一部可支持打电话、发短信、网络服务、APP应用的手机&#xff0c;一般包含五个部分部分&#xff1a;射频部分、基带部分、电源管理、外设、软件。射频部分&#xff1a;一般是信息发送和接收的部分&#xff1b;基带部分&#xff1a;一般是信息处理的部分&am…

服务器性能指标(一)——负载(Load)分析及问题排查

转载自 服务器性能指标&#xff08;一&#xff09;——负载&#xff08;Load&#xff09;分析及问题排查平常的工作中&#xff0c;在衡量服务器的性能时&#xff0c;经常会涉及到几个指标&#xff0c;load、cpu、mem、qps、rt等。每个指标都有其独特的意义&#xff0c;很多时候…

HoloLens开发手记 - HoloLens shell概述 HoloLens shell overview

使用HoloLens时&#xff0c;shell是由你周围的世界和来自系统的全息图像构成。我们将这种空间成为混合世界&#xff08;mixed world&#xff09;。 shell包含了一个可以让你将全息图像和应用放置在世界中的开始菜单&#xff08;Start Menu&#xff09;。当一个应用已经被放置在…

【1】flink-source读取数据

【README】 本文记录了flink读取不同数据源的编码方式&#xff0c;数据源包括&#xff1b; 集合&#xff08;元素列表&#xff09;&#xff1b;文件kafka&#xff1b;自定义数据源&#xff1b; 本文使用的flink为 1.14.4 版本&#xff1b;maven依赖如下&#xff1a; <dep…

Oracle入门(二)之服务启动bat

转载自 批处理&#xff08;bat文件&#xff09;自动启动/关闭oracle服务 批处理&#xff08;bat文件&#xff09; 自动启动/关闭oracle服务 判断oracle 服务状态如果服务处于启动状态&#xff0c;就关闭服务&#xff1b;如果服务处于关闭状态&#xff0c;就启动服务。 ECHO OFF…

【2】flink数据流转换算子

【README】 本文记录了flink对数据的转换操作&#xff0c;包括 基本转换&#xff0c;map&#xff0c;flatMap&#xff0c;filter&#xff1b;滚动聚合&#xff08;min minBy max maxBy sum&#xff09;&#xff1b;规约聚合-reduce&#xff1b;分流&#xff1b;connect连接流…

第三篇 Entity Framework Plus 之 Query Cache

离上一篇博客&#xff0c;快一周&#xff0c;工作太忙&#xff0c;只能利用休息日来写一些跟大家分享&#xff0c;Entity Framework Plus 组件系列文章&#xff0c;之前已经写过两篇 第一篇 Entity Framework Plus 之 Audit 第二篇 Entity Framework Plus 之 Query Future 计划…

wireshark tcp抓包分析_网络分析系列之八_使用Wireshark抓包

通过前面的部分&#xff0c;我们对Wireshark界面主体内容有了大致了解。这一节主要介绍如何抓包&#xff0c;抓包后的界面显示&#xff08;因为Wireshark打开数据包后又是另一副界面&#xff09;。如何保存或导出抓取的报文等内容。第一次抓包现在可以开始你的第一次数据包捕获…

Oracle入门(五C)之68个系统变量的key和默认value

Oracle的68个系统变量的key和默认valueappinfo 为 OFF 并且已设置为 "SQL*Plus" arraysize 15 autocommit OFF autoprint OFF autorecovery OFF autotrace OFF blockterminator "." (hex 2e) btitle OFF 为下一条 SELECT 语句的前几个字符 …

【3】flink sink

【README】 本文记录了flink sink操作&#xff0c;输出目的存储器&#xff08;中间件&#xff09;包括 kafka&#xff1b;es&#xff1b;db&#xff1b;等等有很多&#xff1b;本文只给出了 sink2kafka的代码&#xff1b; 本文使用的flink为 1.14.4 版本&#xff1b; 本文部…

【给中高级开发者】构建高性能ASP.NET应用的几点建议

如果你在构建一个面向公众的web站点&#xff0c;那么在项目结尾时你想要实现的就是web负载性能良好。这意味着&#xff0c;你要确保你的产品在高负载下&#xff08;50个并发用户或者每秒200个用户等等&#xff09;能够运行&#xff0c;即使你认为此时不会有那么大的负载。久而久…

Oracle入门(三B)之11G新特性 SYSASM 角色用来管理ASM

转载自 oracle 11G新特性--SYSASM 角色--用来管理ASM SYSASM 角色自动存储管理 (ASM) 是在 Oracle 数据库 10g 中引入的&#xff0c;它在某种程度上打破了 DBA 和系统管理员之间在存储分配功能上的界限。ASM 实例由 DBA 管理&#xff0c;正如常规的 DBA 工作需要以 SYSDBA 角色…

stm32编程入门_电子设计与单片机编程书籍资料推荐

有些同学让我推荐些入门书籍&#xff0c;尝试写写&#xff1a;注&#xff1a;请多看下目录与介绍&#xff0c;网络上也有一些读书笔记和推荐&#xff0c;自行判断是否符合现有层次和水平&#xff0c;再决定是否购买。针对零基础、非专业的电子爱好者&#xff0c;我的推荐学习步…

.NET Core 1.0 RC2 历险之旅

文章背景&#xff1a;对于.NET Core大家应该并不陌生, 从它被 宣布 到现在已经有1-2年的时间了&#xff0c;其比较重要的一个版本1.0 RC2 也即将发布。.Net Core从一个一个的测试版到现在的RC2&#xff0c;经历了很多个大大小小的变化。特别是在RC1到RC2的更新之中&#xff0c;…

【4.1】flink窗口算子的trigger触发器和Evictor清理器

【README】 本文记录了 窗口算子的触发器trigger和 evictor清理器&#xff1b; trigger触发器&#xff1a;决定了一个窗口&#xff08;由 window assigner 定义&#xff09;何时可以被 window function 处理&#xff1b;evictor清理器&#xff1a; evictor 可以在 trigger 触…

ue4 运行禁用鼠标_[UE4] VS code使用LuaPanda断点调试

luaPanda安装搜索luapanda 点击下载安装或者打开下面的地址&#xff0c;点击会提示打开vscode进行安装luaPanda下载地址&#xff1a;https://marketplace.visualstudio.com/items?itemNamestuartwang.luapanda&ssrfalse#review-details在gethbub中下载LuaPanda.lua文件&am…

Oracle入门(五B)之desc命令

翻译自 DESCRIBE describe命令 列出指定表的列定义&#xff0c;视图或同义词&#xff0c;或指定函数或存储过程的详述。 语法&#xff1a;desc[ribe] {[模式.]对象[链接串]} 模式 表示对象驻留的架构。如果省略架构&#xff0c;SQL*Plus假定拥有自己的对象。 对象 表示要描…

【4】flink window窗口算子

【README】 本文记录了 窗口算子操作&#xff1b;本文使用的flink为 1.14.4 版本&#xff1b;本文部分内容总结自 flink 官方文档&#xff1a; 窗口 | Apache Flink窗口 # 窗口&#xff08;Window&#xff09;是处理无界流的关键所在。窗口可以将数据流装入大小有限的“桶”中…

Microsoft将在UWP上支持React Native,同时为VS Code添加工具软件

Microsoft和Facebook日前宣布React Native的下一个目标平台是Universal Windows Platform&#xff08;UWP&#xff09;。 对于已经在多个设备平台上使用React Native的开发者来说&#xff0c;这是个好消息&#xff0c;因为这让他们可以在Windows上重用组件。对于UWP的开发者来说…

Xamarin Evolve 2016 Keynote回顾

编者语&#xff1a;距离上一次Xamarin Evolve 大会足足有两年时间了&#xff0c;这两年整个行业都在变化&#xff0c;Xamarin是整个.NET行业的表表者。两年过去Xamarin终于并入微软&#xff0c;免费了&#xff0c;也开源了。还有什么大招呢&#xff1f;刚结束的Xamarin Evolve给…