es6 dsl与sql对比
生活随笔
收集整理的這篇文章主要介紹了
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"} }} }字段含義:
| 序號 | 字段名 | 描述 |
| 1 | APPNAME | 應用名 |
| 2 | ITFNAME | 接口名 |
| 3 | DBNAME | 數據庫名 |
| 4 | EXE_COST | 執行耗時 |
| 5 | EXE_TIMES | ??????? 執行次數 |
| 6 | CREATE_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 10dsl如下:
{"_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如下:
?
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 3dsl:使用 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"}}}}} }步驟:
總結
以上是生活随笔為你收集整理的es6 dsl与sql对比的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: pre2-flink单机部署与job提交
- 下一篇: 【1】flink-source读取数据