ELK2之ELK的语法学习
1.回顾
(1)es是什么?
es是基于Apache Lucene的开源分布式(全文)搜索引擎,提供简单的RESTful API来隐藏Lucene的复杂性。 es除了全文搜索引擎之外,还可以这样描述它: 分布式的实时文件存储,每个字段都被索引并可被搜索
分布式的实时分析搜索引擎
可以扩展到成百上千台服务器,处理PB级结构化或非结构化数据。
(2)
数据组织 - 物理:节点和分片
- 逻辑:索引、类型、文档
(3)
简单操作
GET
PUT
DELETE
2.ES的增删改查(curd)
(1)删除之前的数据&数据准备(创建数据)
DELETE s18 PUT s18/doc/
{
"name":"yangyazhou",
"age": ,
"sex": "男",
"tags": "闷骚",
"b": ""
} PUT s18/doc/
{
"name":"yangtao",
"age": ,
"sex": "男",
"tags":"浪",
"b": ""
} PUT s18/doc/
{
"name":"cancan",
"age": ,
"sex":"女",
"tags":"学习认真",
"b":""
} PUT s18/doc/
{
"name":"guchenxu",
"age": ,
"sex": "男",
"tags":"幽默",
"b":""
} PUT s18/doc/
{
"name":"yangwenyu",
"age": ,
"sex": "男",
"tags":"正人君子",
"b":""
}
运行上边的5个操作
(2)查找数据
GET s18/doc/ GET s18/doc/_search # 查询字符串 query string
GET s18/doc/_search?q=age:
(3)更新,只能更新一个,其他不能更新,(不建议使用)
PUT s18/doc/
{
"tags":"帅气"
} GET s18/doc/

上图是查看到的数据,下面恢复一下数据
(4)只更新指定字段,其他不做修改
#恢复数据
PUT s18/doc/5
{
"name":"yangwenyu",
"age": 23,
"sex": "男",
"tags":"正人君子",
"b":"19941201"
}
# 修改指定字段使用POST
POST s18/doc//_update
{
"doc": {
"tags":"帅气"
}
}
#查看
GET s18/doc/
是否可以按照条件删除?
DELETE s18/doc/ DELETE s18
不建议下图的删除方式
POST s18/doc/_delete_by_query?q=age:

# 查询字符串 query string
GET s18/doc/_search?q=age:
只需要记忆最简单的就可以了
PUT增加 GET查找 POST修改 DELETE删除
3.es查询的两种方式
# 查询的两种方式
# 方式一:查询字符串 query string
GET s18/doc/_search?q=age: # 方式二:DSL GET s18/doc/_search
{
"query": {
"match": {
"age": "18"
}
}
}
GET s18/doc/_search
{
"query": {
"match": {
"age":
}
}
}
#内部已经做好了转化
4.复杂查询之es的match和match_all
match
GET s18/doc/_search
{
"query": {
"match": {
"tags": "浪"
}
}
}
# 报错,不能加在列表里边
GET s18/doc/_search
{
"query": {
"match": {
"tags": ["浪", "闷骚"]
}
}
} #通过空格分隔 GET s18/doc/_search
{
"query": {
"match": {
"tags": "浪 闷骚"
}
}
}
#通过逗号分隔
GET s18/doc/_search
{
"query": {
"match": {
"tags": "浪,闷骚"
}
}
}
#只要符合上边的一个条件就能返回,只是写法不同内部会做一些转换
match_all的用法
#下面的两种方式是等价的
GET s18/doc/_search GET s18/doc/_search
{
"query": {
"match_all": {}
}
}
5.es的sort排序(通常以数字排序)年龄,薪水,分数等等
desc表示从大到小,降序
asc表示从小到大,升序
注意:不是所有的字段都能排序,选择有意义的排序
# 排序 sort
GET s18/doc/_search
{
"query": {
"match_all": {}
},
"sort": [
{
"age": {
"order": "desc"
}
}
]
} GET s18/doc/_search
{
"query": {
"match_all": {}
},
"sort": [
{
"age": {
"order": "asc"
}
}
]
}
6.es的分页(结构化查询条件是可插拔的优点)
GET s18/doc/_search
GET s18/doc/_search
{
"query": {
"match_all": {}
},
"from": ,
"size":
} #上边查找的是第1条和第2条数据 GET s18/doc/_search
{
"query": {
"match_all": {}
},
"from": ,
"size":
} #上边查找的是第3条和第4条数据 GET s18/doc/_search GET s18/doc/_search
{
"query": {
"match_all": {}
},
"from": ,
"size":
}
#上边查找的是第5条到底15条数据,没有就取到最大值,如果只有1条就只返回1条
分页就是自定制,从哪显示到哪里的意思.
7.es的bool查询should(or) must(and) must_not(not)
#查询yangwenyu或者18岁
GET s18/doc/_search
{
"query": {
"bool": {
"should": [
{
"match": {
"name": "yangwenyu"
}
},
{
"match": {
"age": ""
}
}
]
}
}
}
#这个查询出的结果排序,也就是打分机制存在于内部算法中
#查询性别是男的并且年龄81
GET s18/doc/_search
{
"query": {
"bool": {
"must": [
{
"match": {
"age":
}
},
{
"match": {
"sex": "男"
}
}
]
}
}
}
# 查询性别既不是男的,又不是18岁: must_not
GET s18/doc/_search
{
"query": {
"bool": {
"must_not": [
{
"match": {
"sex": "男"
}
},
{
"match": {
"age":
}
}
]
}
}
}
# 查询年龄大于20岁的男的文档: gt 大于
GET s18/doc/_search
{
"query": {
"bool": {
"must": [
{
"match": {
"sex": "男"
}
}
],
"filter": {
"range": {
"age": {
"gt":
}
}
}
}
}
}
# gte 大于等于,查询年龄大于等于23的男的
GET s18/doc/_search
{
"query": {
"bool": {
"must": [
{
"match": {
"sex": "男"
}
}
],
"filter": {
"range": {
"age": {
"gte":
}
}
}
}
}
}
# 小于lt 查询年龄小于20的女的 GET s18/doc/_search
{
"query": {
"bool": {
"must": [
{
"match": {
"sex": "女"
}
}
],
"filter": {
"range": {
"age": {
"lt":
}
}
}
}
}
}
# 小于等于lte, 查询年龄小于等于23的男的 GET s18/doc/_search
{
"query": {
"bool": {
"should": [
{
"match": {
"sex": "男"
}
}
],
"filter": {
"range": {
"age": {
"lte":
}
}
}
}
}
}
# filter中尽量用must,避免脏数据
GET s18/doc/_search
{
"query": {
"bool": {
"must": [
{
"match": {
"sex": "男"
}
}
],
"filter": {
"range": {
"age": {
"lte":
}
}
}
}
}
}
# 查询年龄小于等于23的非男性 GET s18/doc/_search
{
"query": {
"bool": {
"must_not": [
{
"match": {
"sex": "男"
}
}
],
"filter": {
"range": {
"age": {
"lte":
}
}
}
}
}
}
9.es的高亮查询
关键字高亮显示,查询是哪个检索的.
# 高亮查询
# 查询name是cancan的文档
GET s18/doc/_search
{
"query": {
"match": {
"name": "cancan"
}
},
"highlight": {
"fields": {
"name": {}
}
}
} GET s18/doc/_search
{
"query": {
"match": {
"name": "cancan"
}
},
"highlight": {
"pre_tags": "<b style='color:red;font-size:20px;' class='wangdi'>",
"post_tags": "</b>",
"fields": {
"name": {}
}
}
}
#现在只是json结果,只有放在前端才能显示结果
PUT s18/doc/
{
"name":"wangdi",
"desc": "骚的打漂"
} GET s18/doc/_search
{
"query": {
"match": {
"desc": "打漂"
}
},
"highlight": {
"pre_tags": "<b style='color:red;font-size:20px;' class='wangdi'>",
"post_tags": "</b>",
"fields": {
"desc": {}
}
}
}
#上边代表只是高亮显示"打漂"
#高亮显示就是重要的点
10.es的结果字段过滤
# 结果过滤 GET s18/doc/_search
{
"query": {
"match": {
"name": "yangtao"
}
},
"_source": "name"
}
GET s18/doc/_search
{
"query": {
"match": {
"name": "yangtao"
}
},
"_source": ["name", "age", "sex"]
}
我们只需要过滤出,我们需要的字段,减少服务器压力
11.es的聚合
# 聚合查询 # sum,查询所有男生的年龄总和
GET s18/doc/_search
{
"query": {
"match": {
"sex": "男"
}
},
"aggs": {
"my_sum": {
"sum": {
"field": "age"
}
}
}
} # 查询年龄最大的男生 max
GET s18/doc/_search
{
"query": {
"match": {
"sex": "男"
}
},
"aggs": {
"my_max": {
"max": {
"field": "age"
}
}
}
} # 查询年龄最小的 min GET s18/doc/_search
{
"aggs": {
"my_min": {
"min": {
"field": "age"
}
}
}
} # 求平均 avg
GET s18/doc/_search
{
"aggs": {
"my_avg": {
"avg": {
"field": "age"
}
}
}
} # 分组,根据年龄,-,,-, -100,每个年龄段有多少人? GET s18/doc/_search
{
"query": {
"match": {
"sex": "男"
}
},
"aggs": {
"my_group":{
"range": {
"field": "age",
"ranges": [
{
"from": ,
"to":
},
{
"from": ,
"to":
},
{
"from": ,
"to":
}
]
}
}
}
} # 分组,根据年龄,-,,-, -, 对每组年龄求和
GET s18/doc/_search
{
"query": {
"match": {
"sex": "男"
}
},
"aggs": {
"group":{
"range": {
"field": "age",
"ranges": [
{
"from": ,
"to":
},
{
"from": ,
"to":
},
{
"from": ,
"to":
}
]
},
"aggs": {
"my_sum": {
"sum": {
"field": "age"
}
}
}
}
}
}
先分组,再聚合
12.es的mappings之dynamic
homework:
(1)用py脚本制作一键启动es和kibana
(2)倒排索引,把表画出来
ELK2之ELK的语法学习的更多相关文章
- Golang 语法学习笔记
Golang 语法学习笔记 包.变量和函数. 包 每个 Go 程序都是由包组成的. 程序运行的入口是包 main. 包名与导入路径的最后一个目录一致."math/rand" 包由 ...
- Swift高级语法学习总结(转)
Swift高级语法学习总结 1.函数 1.1 func funcNmae()->(){} 这样就定义了一个函数,它的参数为空,返回值为空,如果有参数和返回值直接写在两个括号里就可以了 1.2 参 ...
- Swift基础语法学习总结(转)
Swift基础语法学习总结 1.基础 1.1) swift还是使用// 和/* */ 来注释,并且/* */允许多行注释. 1.2) swift使用print和println打印,它的传参是一个泛型 ...
- Swift高级语法学习总结
Swift基础语法学习总结Swift高级语法学习总结Swift语法总结补充(一) 1.函数 1.1 func funcNmae()->(){} 这样就定义了一个函数,它的参数为空,返回值为空,如 ...
- Swift基础语法学习总结
Swift基础语法学习总结Swift高级语法学习总结Swift语法总结补充(一) 1.基础 1.1) swift还是使用// 和/* */ 来注释,并且/* */允许多行注释. 1.2) swift ...
- Robot Framework语法学习(一)
Robot Framework语法学习: 一.变量的声明.赋值与使用 1.变量标识符:每个变量都可以用 变量标识符 ${变量名} 来表示. 2.变量声明:可以在TestSuite上点右键或者在Edi ...
- MarkDown语法 学习笔记 效果源码对照
MarkDown基本语法学习笔记 Markdown是一种可以使用普通文本编辑器编写的标记语言,通过简单的标记语法,它可以使普通文本内容具有一定的格式. 下面将对Markdown的基本使用做一个介绍 目 ...
- 毕业设计 之 五 PHP语法学习笔记
毕业设计 之 四 PHP语法学习笔记 作者:20135216 平台:windows10 软件:XAMPP,DreamWeaver 说明:该笔记是对网站编程语言的详细学习 一.PHP基础 0. 关于环境 ...
- 【Python】Python-基础语法学习
基础语法学习 果然学完 C++ 后再看其他语言的确有很多的共性,只需要熟悉一下python的独特语法和 C++ 中的差异就可以写出一些小的程序,而写得过程中也再次体会出python代码的精简和灵活: ...
随机推荐
- nginx 下开启pathinfo模式
前几天自己新弄了个服务器,nginx的环境, 看到thinkcmf的框架,下载下来准备研究下,安装完成后,发现 url 是 普通模式,然后我就按照那个手册去后台开启了pathinfo模式,这一改完蛋了 ...
- js移动端判断上下左右划屏
$(function(){ (function(){ var LSwiperMaker = function(o){ var that = this; this.config = o; this.co ...
- H5C3--边框图片
类似于android的.9图片,目的是为了防止图片因为内容的扩展而导致图片拉伸失真. <!DOCTYPE html> <html lang="en"> &l ...
- JS 重载页面,本地刷新,返回上一页
JS 重载页面,本地刷新,返回上一页 : <a href="javascript:history.go(-1)">返回上一页</a> <a href= ...
- 【笔记】LR集合点
集合点的引入是为了模拟并发场景: 1.模拟多用户相同操作的并发. 2.模拟多用户不同操作的并发.(把集合点的名字改成一个就可以了) 在脚本中插入集合点 集合点只需要在脚本中插入rendezvous即可 ...
- 多机MySQL一主双从详细安装主从复制
多机MySQL一主双从详细安装 一.复制的工作原理 要想实现AB复制,那么前提是master上必须要开启二进制日志 1.首先master将数据更新记录到二进制日志文件 2.从slave start开始 ...
- spring基于xml的声明式事务控制配置步骤
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...
- javascript最大公约数与最小公倍数
var a = 5 ; var b = 15 ; var min = Math.min(a,b); var max = Math.max(a,b); // for循环求最大公约数 for(var i ...
- 小飞音箱wifi配网流程
音箱出货时,已经内置wifi,如果无法接通,按照如下方案执行: 小飞音箱wifi配网流程 0. 接通音箱电源 通电3分钟后,音箱如果显示红色光圈,表示未联网,则需要手动联网 1. 手机下载小飞在线ap ...
- django中模型
一.django需要使用数据库,则需要安装对应的驱动,比如mysql,则需要安装mysqlclient驱动: pip install mysqlclient 二.在settings.py文件中配置数据 ...