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的语法学习的更多相关文章

  1. Golang 语法学习笔记

    Golang 语法学习笔记 包.变量和函数. 包 每个 Go 程序都是由包组成的. 程序运行的入口是包 main. 包名与导入路径的最后一个目录一致."math/rand" 包由 ...

  2. Swift高级语法学习总结(转)

    Swift高级语法学习总结 1.函数 1.1 func funcNmae()->(){} 这样就定义了一个函数,它的参数为空,返回值为空,如果有参数和返回值直接写在两个括号里就可以了 1.2 参 ...

  3. Swift基础语法学习总结(转)

    Swift基础语法学习总结 1.基础  1.1) swift还是使用// 和/* */ 来注释,并且/* */允许多行注释. 1.2) swift使用print和println打印,它的传参是一个泛型 ...

  4. Swift高级语法学习总结

    Swift基础语法学习总结Swift高级语法学习总结Swift语法总结补充(一) 1.函数 1.1 func funcNmae()->(){} 这样就定义了一个函数,它的参数为空,返回值为空,如 ...

  5. Swift基础语法学习总结

    Swift基础语法学习总结Swift高级语法学习总结Swift语法总结补充(一) 1.基础  1.1) swift还是使用// 和/* */ 来注释,并且/* */允许多行注释. 1.2) swift ...

  6. Robot Framework语法学习(一)

    Robot Framework语法学习: 一.变量的声明.赋值与使用 1.变量标识符:每个变量都可以用  变量标识符 ${变量名} 来表示. 2.变量声明:可以在TestSuite上点右键或者在Edi ...

  7. MarkDown语法 学习笔记 效果源码对照

    MarkDown基本语法学习笔记 Markdown是一种可以使用普通文本编辑器编写的标记语言,通过简单的标记语法,它可以使普通文本内容具有一定的格式. 下面将对Markdown的基本使用做一个介绍 目 ...

  8. 毕业设计 之 五 PHP语法学习笔记

    毕业设计 之 四 PHP语法学习笔记 作者:20135216 平台:windows10 软件:XAMPP,DreamWeaver 说明:该笔记是对网站编程语言的详细学习 一.PHP基础 0. 关于环境 ...

  9. 【Python】Python-基础语法学习

    基础语法学习 果然学完 C++ 后再看其他语言的确有很多的共性,只需要熟悉一下python的独特语法和 C++ 中的差异就可以写出一些小的程序,而写得过程中也再次体会出python代码的精简和灵活: ...

随机推荐

  1. Luogu P4011 孤岛营救问题(状态压缩+最短路)

    P4011 孤岛营救问题 题意 题目描述 \(1944\)年,特种兵麦克接到国防部的命令,要求立即赶赴太平洋上的一个孤岛,营救被敌军俘虏的大兵瑞恩.瑞恩被关押在一个迷宫里,迷宫地形复杂,但幸好麦克得到 ...

  2. CodeChef--Cards, bags and coins

    题目链接 Yet another game from chef. Chef gives you N cards and M bags. Each of the N cards has an integ ...

  3. 微信小程序之threejs全景

    最近在开发小程序,身心疲惫,原因是功能和app相同,我裂开了. 各种封装组件,各种写页面,不过有个好处是以前写的h5拿来改一下标签,基本上还是ok的,就剩下最后几个功能,其中就有一个VR全景功能. 移 ...

  4. IntelliJ IDEA 17 创建maven项目

    参考博客: https://yq.aliyun.com/articles/111053# 部署服务器时  没有Tomcat Server选项

  5. 木卯先生的笔记---Date类、DateFormat类和Calendar类

    1.Date类 1.1 简介 Date类是 java.util 包下面的类,表示特定的瞬间,精确到毫秒. 1.2 方法 1.2.1 Date() 构造方法 public Date() :分配 Date ...

  6. 简单描述如何安装配置一个apache开源版hadoop,只描述即可,无需列出完整步骤,能列出步骤更好

    1 ) 安装JDK并配置环境变量(/etc/profile) 2) 关闭防火墙 3) 配置hosts文件,方便hadoop通过主机名访问(/etc/hosts) 4) 设置ssh免密码登录 5) 解压 ...

  7. [洛谷P4141] 消失之物「背包DP」

    暴力:暴力枚举少了哪个,下面套一个01背包 f[i][j]表示到了i物品,用了j容量的背包时的方案数,f[i][j]=f[i-1][j]+f[i-1][j-w[i]]O(n^3) 优化:不考虑消失的, ...

  8. php7不再支持HTTP_RAW_POST_DATA,微信支付$GLOBALS[‘HTTP_RAW_POST_DATA’]获取不到数据,

    升级到php7后, 发现旧的web系统有些问题, 查看后才发现原来是php7不再支持HTTP_RAW_POST_DATA 原来系统一些地方, 使用$GLOBALS[‘HTTP_RAW_POST_DAT ...

  9. Excel柱状图折线图组合怎么做 Excel百分比趋势图制作教程

    Excel柱状图折线图组合怎么做 Excel百分比趋势图制作教程 用excel作图时候经常会碰到做柱状图和折线图组合,这样的图一般难在折线图的数据很小,是百分比趋势图,所以经常相对前面主数据太小了,在 ...

  10. HBuilderX生成本地打包App资源

    http://ask.dcloud.net.cn/question/60254 概要 在HBuilderX中开发的应用可以提交到云端打包生成apk(Android平台)和ipa(iOS平台).如果本地 ...