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代码的精简和灵活: ...
随机推荐
- Leetcode437Path Sum III路径总和3
给定一个二叉树,它的每个结点都存放着一个整数值. 找出路径和等于给定数值的路径总数. 路径不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点). 二叉树不超过1 ...
- JDK8日期时间操作小汇总
统一使用java.time.*包下的类 1.获取当前的日期.时间.日期加时间 LocalDate todayDate = LocalDate.now(); //今天的日期 LocalTime now ...
- WPF 单个模块换肤
xmal: <Window x:Class="wpfSkin.MainWindow" xmlns="http://schemas.microsoft.com/win ...
- div style标签内嵌CSS样式
我们在DIV标签内.SPAN标签内.p标签等html标签内使用style属性直接设置div的样式. 一.在<div>标签内使用style设置css样式 - TOP 1.实例html ...
- MarioTCP, take it..
MrioTCP,超级马里奥,顾名思义,他不仅高效,而且超级简易和好玩.同时他可以是一个很简洁的Linux C 开发学习工程.毫不夸张的说,如果全部掌握这一个工程,你会成为一个Linux C的牛人:当然 ...
- MySQL数据库起步 关于数据库的基本操作(更新中...)
mysql的基本操作 连接指定的服务器(需要服务器开启3306端口) mysql -h ip地址 -P 端口号 -u 账号 -p 密码 删除游客模式 mysql -h ip地址 -P 端口号 -u 账 ...
- oracle-约束-序列
概要图 一 约束 --问题:往表中插入数据的时候,可能出现一些问题,比如:重复插入数据,内容不对(性别) --如何保证数据库表中数据的完整性和一致性呢? 约束是强加在表上的规则或条件,确保数据库满足业 ...
- DNS客户端配置文件/etc/resolv.conf
本来不应该把DNS客户端配置文件放在这里来说,但由于新手弟兄上网时,虽然能拔号,但不能以域名访问.究其原因是由于没有修改 /etc/resolv.conf 文件: /etc/resolv.conf 里 ...
- 计蒜客 Prefix Free Code(字典树+树状数组)
Consider n initial strings of lower case letters, where no initial string is a prefix of any other i ...
- 2016计蒜之道复赛A 百度地图的实时路况
百度地图的实时路况功能相当强大,能方便出行的人们避开拥堵路段.一个地区的交通便捷程度就决定了该地区的拥堵情况.假设一个地区有 nnn 个观测点,编号从 111 到 nnn.定义 d(u,v,w)d(u ...