从第一篇开始,我用的ES版本就是7.8.0的,与低版本略有不同,不同点可以参考官方介绍,最大的不同就是抛弃 type 这一概念,为了方便测试,首先建立一个学生成绩的索引库(在建立的同时,规定字段类型,并指定IK中文分词)

PUT http://localhost:9200/db_student
{
"mappings": {
"properties": {
"class": {
"type": "integer",
"store": true,
"index":true
},
"chinese": {
"type": "integer",
"store": true,
"index":true
},
"english": {
"type": "integer",
"store": true,
"index":true
},
"math": {
"type": "integer",
"store": true,
"index":true
},
"name": {
"type": "text",
"store": true,
"index":true
},
"school": {
"type": "text",
"store": true,
"index":true,
"analyzer":"ik_max_word"
}
}
}
}

为了方便测试,需要先插入测试数据,如下,一共插入8条记录

PUT http://localhost:/db_student/_doc/
{
"chinese":,
"class":,
"english":,
"math":,
"name":"Vincent",
"school":"华南理工大学"
} PUT http://localhost:/db_student/_doc/
{
"chinese":,
"class":,
"english":,
"math":,
"name":"Kitty",
"school":"华南理工大学"
} PUT http://localhost:/db_student/_doc/
{
"chinese":,
"class":,
"english":,
"math":,
"name":"Thomas",
"school":"华南师范大学"
} PUT http://localhost:/db_student/_doc/
{
"chinese":,
"class":,
"english":,
"math":,
"name":"Lucy",
"school":"华南师范大学"
} PUT http://localhost:/db_student/_doc/
{
"chinese":,
"class":,
"english":,
"math":,
"name":"Lily",
"school":"华南农业大学"
} PUT http://localhost:/db_student/_doc/
{
"chinese":,
"class":,
"english":,
"math":,
"name":"Coco",
"school":"华南农业大学"
} PUT http://localhost:/db_student/_doc/
{
"chinese":,
"class":,
"english":,
"math":,
"name":"Allen",
"school":"中山大学"
} PUT http://localhost:/db_student/_doc/
{"chinese":,
"class":,
"english":,
"math":,
"name":"Zack",
"school":"中山大学"
}

打开 Kibana 可以看到已经插入的数据,如下

数据已经插入,现在可以来实现基本的查询了。

1、查询所有索引库、所有文档

POST  http://localhost:9200/_search
{
"query": {
"match_all": {}
}
}

2、查询索引库 db_student 所有文档

POST  http://localhost:9200/db_student/_search
或者是 http://localhost:9200/db_student/_doc/_search
{
"query": {
"match_all": {}
}
}

3、根据文档编号 id=1 来获取文档

GET  http://localhost:/db_student/_doc/

4、查询 class=10 的学生

注意:term 在这里相当于 = 的逻辑,但是如果是字符串,还可以是包含的逻辑。

POST  http://localhost:/db_student/_search
{
"query": {
"bool":{
"must":[
{"term":{"class":}}
]
}
}
}

5、And 逻辑查询,如查询 class=10 并且 name=vincent 的文档

POST  http://localhost:/db_student/_search
{
"query": {
"bool":{
"must":[
{"term":{"name":"vincent"}},
{"term":{"class":}}
]
}
}
}

6、模糊查询,例如,查询 school 包含 “华南” 的文档

POST  http://localhost:/db_student/_search
{
"query": {
"bool":{
"must":[
{"match":{"school":"华南"}}
]
}
}
}

也可以是term

POST  http://localhost:/db_student/_search
{
"query": {
"bool":{
"must":[
{"term":{"school":"华南"}}
]
}
}
}

7、范围查询,查询 english 大于等于90,小于等于100的文档

注意:from、to 都是闭包的,包含等于

POST   http://localhost:/db_student/_search
{
"query": {
"bool":{
"must":[
{"range":{"english":{"from":,"to":}}}
]
}
}
}

还可以查大于、小于的逻辑,例如查询  english 大于90的文档

注意:gt 表示大于, lt 表示小于 ,这两者都不包含等于

POST http://localhost:/db_student/_search
{
"query": {
"bool":{
"must":[
{"range":{"english":{"gt":}}}
]
}
}
}

8、高亮显示,例如 name 高亮

POST  http://localhost:/db_student/_search
{
"query": {
"term":{"name":"vincent"}
},
"highlight":{
"pre_tags" : "<a class='red'>",
"post_tags" : "</a>",
"fields" : {
"name" : {}
}
}
}

查询结果是:

{
"took": ,
"timed_out": false,
"_shards": {
"total": ,
"successful": ,
"skipped": ,
"failed":
},
"hits": {
"total": {
"value": ,
"relation": "eq"
},
"max_score": .,
"hits": [
{
"_index": "db_student",
"_type": "_doc",
"_id": "",
"_score": .,
"_source": {
"chinese": ,
"class": ,
"english": ,
"math": ,
"name": "Vincent",
"school": "华南理工大学"
},
"highlight": {
"name": [
"<a class='red'>Vincent</a>"
]
}
}
]
}
}

9、分页和排序,先按照 english 倒序,再按 math 升序,每页3条记录,取第一页

POST  http://localhost:/db_student/_search
{
"query": {
"match_all":{}
},
"from": ,
"size": ,
"sort":{
"english" : {"order" : "desc"},
"math": {"order" : "asc"} }
}

查询结果是

{
"took": ,
"timed_out": false,
"_shards": {
"total": ,
"successful": ,
"skipped": ,
"failed":
},
"hits": {
"total": {
"value": ,
"relation": "eq"
},
"max_score": null,
"hits": [
{
"_index": "db_student",
"_type": "_doc",
"_id": "",
"_score": null,
"_source": {
"chinese": ,
"class": ,
"english": ,
"math": ,
"name": "Lily",
"school": "华南农业大学"
},
"sort": [
, ]
},
{
"_index": "db_student",
"_type": "_doc",
"_id": "",
"_score": null,
"_source": {
"chinese": ,
"class": ,
"english": ,
"math": ,
"name": "Vincent",
"school": "华南理工大学"
},
"sort": [
, ]
},
{
"_index": "db_student",
"_type": "_doc",
"_id": "",
"_score": null,
"_source": {
"chinese": ,
"class": ,
"english": ,
"math": ,
"name": "Lucy",
"school": "华南师范大学"
},
"sort": [
, ]
}
]
}
}

聚合查询、统计查询等等, 稍后补上

Elasticsearch第三篇:查询详解的更多相关文章

  1. ElasticSearch第四步-查询详解

    ElasticSearch系列学习 ElasticSearch第一步-环境配置 ElasticSearch第二步-CRUD之Sense ElasticSearch第三步-中文分词 ElasticSea ...

  2. 学会Git玩转GitHub(第三篇) 入门详解 - 精简归纳

    学会Git玩转GitHub(第三篇) 入门详解 - 精简归纳 JERRY_Z. ~ 2020 / 10 / 25 转载请注明出处!️ 目录 学会Git玩转GitHub(第三篇) 入门详解 - 精简归纳 ...

  3. elasticsearch系列三:索引详解(分词器、文档管理、路由详解(集群))

    一.分词器 1. 认识分词器  1.1 Analyzer   分析器 在ES中一个Analyzer 由下面三种组件组合而成: character filter :字符过滤器,对文本进行字符过滤处理,如 ...

  4. Mysql高手系列 - 第9篇:详解分组查询,mysql分组有大坑!

    这是Mysql系列第9篇. 环境:mysql5.7.25,cmd命令中进行演示. 本篇内容 分组查询语法 聚合函数 单字段分组 多字段分组 分组前筛选数据 分组后筛选数据 where和having的区 ...

  5. Mysql高手系列 - 第12篇:子查询详解

    这是Mysql系列第12篇. 环境:mysql5.7.25,cmd命令中进行演示. 本章节非常重要. 子查询 出现在select语句中的select语句,称为子查询或内查询. 外部的select查询语 ...

  6. 《手把手教你》系列技巧篇(三十一)-java+ selenium自动化测试- Actions的相关操作-番外篇(详解教程)

    1.简介 上一篇中,宏哥说的宏哥在最后提到网站的反爬虫机制,那么宏哥在自己本地做一个网页,没有那个反爬虫的机制,谷歌浏览器是不是就可以验证成功了,宏哥就想验证一下自己想法,于是写了这一篇文章,另外也是 ...

  7. 《手把手教你》系列技巧篇(三十六)-java+ selenium自动化测试-单选和多选按钮操作-番外篇(详解教程)

    1.简介 前边几篇文章是宏哥自己在本地弄了一个单选和多选的demo,然后又找了网上相关联的例子给小伙伴或童鞋们演示了一下如何自动化测试,这一篇宏哥在网上找了一个问卷调查,给小伙伴或童鞋们来演示一下.上 ...

  8. ThinkPHP视图查询详解

    ThinkPHP视图查询详解 参考http://www.jb51.net/article/51674.htm   这篇文章主要介绍了ThinkPHP视图查询,需要的朋友可以参考下     ThinkP ...

  9. elasticsearch系列二:索引详解(快速入门、索引管理、映射详解、索引别名)

    一.快速入门 1. 查看集群的健康状况 http://localhost:9200/_cat http://localhost:9200/_cat/health?v 说明:v是用来要求在结果中返回表头 ...

  10. (转)Mysql 多表查询详解

    MySQL 多表查询详解 一.前言  二.示例 三.注意事项 一.前言  上篇讲到mysql中关键字执行的顺序,只涉及了一张表:实际应用大部分情况下,查询语句都会涉及到多张表格 : 1.1 多表连接有 ...

随机推荐

  1. 循序渐进VUE+Element 前端应用开发(17)--- 菜单资源管理

    在权限管理系统中,菜单也属于权限控制的一个资源,应该直接应用于角色,和权限功能点一样,属于角色控制的一环.不同角色用户,登录系统后,出现的系统菜单是不同的.在VUE+Element 前端中,我们菜单结 ...

  2. ATX 学习 (二)-Atx Weditor

    1.Atx的安装 安装adb使用以下命令安装atx最新版pip install --pre -U uiautomator2 手机接到电脑上之后,需要先运行一下命令:python -m uiautoma ...

  3. OpenXml demo

    class OpenXmlDemo { /* * excel 对象结构 * SpreadsheetDocument * >WorkbookPart * >WorksheetPart * & ...

  4. Ordinary - 官方原版软件下载站

    官网:http://a-1.vip/exe/

  5. 写给程序员的机器学习入门 (八) - 卷积神经网络 (CNN) - 图片分类和验证码识别

    这一篇将会介绍卷积神经网络 (CNN),CNN 模型非常适合用来进行图片相关的学习,例如图片分类和验证码识别,也可以配合其他模型实现 OCR. 使用 Python 处理图片 在具体介绍 CNN 之前, ...

  6. Python爬虫入门有哪些基础知识点

    1.什么是爬虫 爬虫,即网络爬虫,大家可以理解为在网络上爬行的一直蜘蛛,互联网就比作一张大网,而爬虫便是在这张网上爬来爬去的蜘蛛咯,如果它遇到资源,那么它就会抓取下来.想抓取什么?这个由你来控制它咯. ...

  7. python-多任务编程05-协程(coroutine)

    协程是python个中另外一种实现多任务的方式,只不过比线程更小占用更小执行单元(理解为需要的资源). 为啥说它是一个执行单元,因为它自带CPU上下文.这样只要在合适的时机, 我们可以把一个协程 切换 ...

  8. 初步知道scss 简化css复杂层级

    简介:今天在调试前端样式的时候,el-button组件位置需要调整并且 需要改字体大小 .直接上了一个 font-text:20px; 发现没作用,谷歌调试发现并未作用到组件里的<span> ...

  9. Residual Attention Network for Image Classification(CVPR 2017)详解

    一.Residual Attention Network 简介 这是CVPR2017的一篇paper,是商汤.清华.香港中文和北邮合作的文章.它在图像分类问题上,首次成功将极深卷积神经网络与人类视觉注 ...

  10. hostapd阅读(openwrt)-2

    深入追踪openwrt下的hostapd之后,发现openwrt无线管理机制格外的复杂,几乎所以的触发与回调均离不开ubus,关于ubus这里不作解释,先大概了解其用途即可(出门左转:https:// ...