es的DSL语句查询
定义DSL
官方文档:https://www.elastic.co/guide/en/kibana/7.14/api.html
- elasticsearch 提供了基于json的完整query DSL (domain specifc languge领域特定语言)来定义查询
查看es的全部索引信息及表头
GET http://10.11.0.1:9200/_cat/indices?v
查看单个索引信息
GET http://10.11.0.1:9200/ingress_access_2022.11.22
全文检索-match查询
POST http://10.11.0.1:9200/ingress_access_2022.11.22/_search
{"query": {"match": {"upstream_status": 500 }}
}#查询状态码为500的
完全匹配-match_phrse查询
POST http://10.11.0.1:9200/ingress_access_2022.11.22/_search
{"query": {"match_phrase": {"env_name": "test"}}
}
#查询环境名为test精确查找
全量查询-match_all
POST http://10.11.0.1:9200/ingress_access_2022.11.22/_search
{"query": {"match_all": {}}
}
分页查询
POST http://10.11.0.1:9200/ingress_access_2022.11.22/_search
{"query": {"match_all": {}}"size": 7"from": 28
}#size:每页显示多少条数据默认值为10
#from:指定跳过数据偏移量的大小,默认为0,默认看第一页查询指定页码的from值=(页码 - 1)* 每页数据大小
查看对象的指定字段
POST http://10.11.0.1:9200/ingress_access_2022.11.22/_search
{"query": {"match_all": {}},"_source": ["status","uri"]
}"_source"用于查看返回指定的字段
查询包含指定字段的文档
POST http://10.11.0.1:9200/ingress_access_2022.11.22/_search
{"query": {"exists": {"field": "env_name"}}
}
#exists:判断字段是否存在,若存在返回改文档,若不存在不返回
基于字段进行排序sort
POST http://10.11.0.1:9200/ingress_access_2022.11.22/_search
{"query": {"match_all": {}},"sort": {"bytes_sent": {"order": "asc"} }
}
#sort 基于指定的字段进行排序,此处为:"bytes_sent";针对_source来进行排序order 指定排序规则asc升序;desc降序
多条件查询-bool
#布尔查询可以匹配多个条件查询:"must"(必须是) , "must_not"(不是) , "should" (条件满足其一即可),
POST http://10.11.0.1:9200/ingress_access_2022.11.22/_search
{"query": {"bool": {"must": [{"match": {"status": 500}},{"match": {"env_id": "kiku.cn"}}]} }
} #布尔值查询区条件区间range基于范围进行过滤:
gt:大于
lt:小于
gte:大于等于
lte:小于等于
POST http://10.11.0.1:9200/ingress_access_2022.11.22/_search
{"query": {"bool": {"filter": {"range":{"status":{"gt": 500,"lt": 600}}} }}
} ##综合环境为dev4.everjiankang.cn,状态500-600之间
POST http://10.11.0.1:9200/ingress_access_2022.11.22/_search
{"query": {"bool": {"must": [{"match": {"env_id": "kiku.cn"}}],"filter": {"range":{"status":{"gt": 500,"lt": 600}}} }}
}
精确匹配值查询
POST http://10.11.0.1:9200/ingress_access_2022.11.22/_search
{"query": {"terms": {"status": [500,504]}}
}#精确匹配数字,布尔值等。match是全文检索
聚合查询
POST http://10.11.0.1:9200/ingress_access_2022.11.22/_search
{"aggs": {"uri": {"terms":{"field": "uri.keyword"}}},"size": 0
}基于uri进行聚合
基于uri.keyword进行分组
#"terms"基于什么进行分组
#"max"基于什么取最大值
#"min"统计最小值的
#"avg"统计平均值{"query": {"bool": {"must": [{"match_phrase": {"env_id": "kiku.cn"}}],"filter": {"range":{"status":{"gte": 500,"lt": 600}}} }},"aggs": {"uri": {"terms":{"field": "uri.keyword""size": 200}}},"size": 0
}
正则表达式用法
https://www.elastic.co/guide/en/elasticsearch/reference/7.14/query-dsl-regexp-query.html
把5xx数据发送到企业微信
企业微信参考官网:https://developer.work.weixin.qq.com/document/path/91770
#通过es的api接口查询前一天5xx访问情况
upload_file=`5xx_log`.csv
##取除数据
make_info() {##设置每天的日志变量year=`date -d last-day +%Y`month=`date -d last-day +%m`date=`date -d last-day +%d`##需要统计的es集群的ip文件ip=`cat es-ip.txt`#把个各集群的数据请求集合到log.txt中for i in $ipdocurl --location --request POST --X POST http://$i:9200/nginx_${year}.${month}.${date}/_search \--header 'User-Agent: Apipost client Runtime/+https://www.apipost.cn/' \--header 'Content-Type: application/json' \--data '{"query": {"bool": {"filter": {"range":{"status":{"gte": 500,"lt": 600}}}}},"aggs": {"uri": {"terms":{"field": "uri.keyword","size": 200}}},"size": 100}'>> log.txtdone##把json格式变成txt输出cat log.txt|jq '.aggregations.uri.buckets[]|.key,.doc_count'|sed -n "N;s/\n/ /p"|awk -F '"' '{print $2","$3}'|grep -E '^/api'|column -t > $upload_file##删除json格式的文档rm -f log.txt
}#往微信中发送消息
sent_wechat() {##机器人信息url="https://qyapi.weixin.qq.com/cgi-bin/webhook"key="机器人的key"# post 参数upload="-H 'Content-Type:multipart/form-data' -F 'filename=@$upload_file;type=application/octet-stream' $url/upload_media?key=$key&type=file"# 获取临时素材idmedia_id=`curl -s -X POST $upload|jq -r .media_id`###发送curl 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key='$key'' \-H 'Content-Type: application/json' \-d '{"msgtype": "file","file": {"media_id": "'$media_id'"}}'
}make_info
sent_wechat
es的DSL语句查询相关推荐
- 使用Bboss处理ES的dsl语句
首先添加bboss依赖 <dependency><groupId>com.bbossgroups.plugins</groupId><artifactId&g ...
- ES常用DSL的查询和简单统计
DSL? 英文全称Domain Specific Language,解释为领域专用语言. DSL是针对某个特定领域而开发的语言,而我们平时接触 到的C/C++,Java,Python/Ruby, 都属 ...
- es 常用DSL查询语序 以及springDataES对应和使用
基本理解 索引 = 数据库 类型 = 表 文档 = 一条数据 字段 = 字段 映射 = 设计表的组成(这里不像是关系型数据库不能多加字段可以多加只是一个软规定) ik 地址直接访问用就ok:http: ...
- es的自动补全查询——DSL语句java代码实现
1.DSL语句 elasticsearch提供了Completion Suggester查询来实现自动补全功能.这个查询会匹配以用户输入内容开头的词条并返回. 为了提高补全查询的效率,对于文档中字段的 ...
- Elasticsearch查询时还在百度DSL语句吗?你可能需要这份总结
意气风发啊骑上我快乐的小摩托良心公众号啊!我上墙了你开始了嚯嚯嚯嚯嚯哈哈哈哈哈皮皮虾我们走可乐在厨房 红牛在冰箱6666666 看弹幕,点关注 " Do your little bit of ...
- es中的dsl练习题-----简单的dsl语句
slirp4netns >= 0.4 fuse-overlayfs >= 0.7 这是在本地安装elasticsearch数据然后通过kibana来操作数据的dsl来实现的 其中的查询ap ...
- es怎么返回全部查询结果_es的返回数据结构
ES即简单又复杂,你可以快速的实现全文检索,又需要了解复杂的REST API.本篇就通过一些简单的搜索命令,帮助你理解ES的相关应用.虽然不能让你理解ES的原理设计,但是可以帮助你理解ES,探寻更多的 ...
- Day121.ElasticSearch:概述、安装、基本操作、DSL高级查询
目录 一.ElasticSearch概述 2.倒排索引 3.ElasticSearch 核心概念 ★ (一) ElasticSearch | 相关工具安装 (Windows) 2.kibana7.8 ...
- 微服务11_ES:DSL/RestClient查询文档
微服务11_ES:DSL/RestClient查询文档 一.DSL查询文档 1.DSL Query的分类 1.全文检索查询 match查询示例: multi_match查询示例: 2.精准查询 ter ...
最新文章
- 命令行的全文搜索工具--ack
- 性能调优常见问题与方案
- android okhttp 架构,Android okhttp3.0 框架使用总结
- phpcms发布新闻到数据库_如何利用PHPCMS调用新闻列表
- android 4.4.2截屏方法,android4.4.2 使用 uiautoviewer 截屏报错
- 【Tensorflow】ValueError: Only call `sigmoid_cross_entropy_with_logits` with named arguments
- 【Git】Git解决文件本地更改的合并覆盖错误
- 【计算机网络】URI、URL、URN 辨析
- hadoop KerberosUtil 做Kerberos认证
- 中英文对照 —— 手机 App/PC 端软件(系统)、互联网
- linux kernel 本地提权漏洞CVE-2013-1763 exploit 代码分析
- opencv3.4.x和opencv4.x中 cv2.findContours的不同 ValueError: too many values to unpack (expected 2)
- louvain算法python_python – 如何在igraph中运行louvain社区检测算法?
- BT5的 U盘启动 制作
- 打开QQ音乐检测不到声卡
- 使用虚拟机安装操作系统可能出现的问题
- opencv将多张图片合成视频
- 【python】断言的用法
- 2017年2月28日-----------乱码新手自学.net 之特性与验证
- 怎样从零开始训练一个AI车手?