ES高级查询语法DSL实战 - 第504篇

历史文章(文章累计500+)

国内最全的Spring Boot系列之一

国内最全的Spring Boot系列之二

国内最全的Spring Boot系列之三

国内最全的Spring Boot系列之四

国内最全的Spring Boot系列之五》

国内最全的Spring Boot系列之六

国内最全的Spring Boot系列之七》

ElasticSearch重建/创建/删除索引操作 - 第501篇

ElasticSearch文档操作[ES系列] - 第502篇

ElasticSearch文档批量操作[ES系列] - 第503篇

Hi,大家好,我是悟纤。我就是我,不一样的烟火。我就是我,与众不同的小苹果。

这一节来看看ES高级查询Query DSL。

一、DSL语法和数据准备

ES中提供了一种强大的检索数据方式,这种检索方式称之为Query DSL (Domain Specified Language 领域专用语言) , Query DSL是利用Rest API传递JSON格式的请求体(RequestBody)数据与ES进行交互,这种方式的丰富查询语法让ES检索变得更强大,更简洁。

1.1 语法

基本语法如下:

复制代码
GET /es_db/_doc/_search {json请求体数据}可以简化为下面写法GET /es_db/_search {json请求体数据}​

1.2 示例

示例如下:

复制代码
#无条件查询,默认返回10条数据GET /es_db/_search{  "query":{    "match_all":{}  }}​

(1)took:花费时间,单位毫秒。

(2)hits:符合条件的信息。

(3)hits.total:符合条件的总文档。

(4)hits.hits:符合条件结果集,默认前10个文档。

1.3 示例数据

准备数据:

复制代码
#指定ik分词器PUT /es_db{"settings" : {"index" : {"analysis.analyzer.default.type": "ik_max_word"}}}​# 创建文档,指定idPUT /es_db/_doc/1{"name": "张三","sex": 1,"age": 25,"address": "广州天河公园","remark": "java developer"}PUT /es_db/_doc/2{"name": "李四","sex": 1,"age": 28,"address": "广州荔湾大厦","remark": "java assistant"}​PUT /es_db/_doc/3{"name": "王五","sex": 0,"age": 26,"address": "广州白云山公园","remark": "php developer"}​PUT /es_db/_doc/4{"name": "赵六","sex": 0,"age": 22,"address": "长沙橘子洲","remark": "python assistant"}​PUT /es_db/_doc/5{"name": "张龙","sex": 0,"age": 19,"address": "长沙麓谷企业广场","remark": "java architect assistant"}​PUT /es_db/_doc/6{"name": "赵虎","sex": 1,"age": 32,"address": "长沙麓谷兴工国际产业园","remark": "java architect"}​PUT /es_db/_doc/7{"name": "李虎","sex": 1,"age": 32,"address": "广州番禺节能科技园","remark": "java architect"}​PUT /es_db/_doc/8{"name": "张星","sex": 1,"age": 32,"address": "武汉东湖高新区未来智汇城","remark": "golang developer"}​

二、match_all查询

2.1 match_all

使用match_all,匹配所有文档,默认只会返回10条数据。

原因:_search 查询默认采用的是分页查询,每页记录数size的默认值为10。如果想显示更多数据,指定size

复制代码
GET /es_db/_search# 等同于GET /es_db/_search{"query":{"match_all":{}}}​

2.2 返回源数据_source

_source 关键字: 是一个数组,在数组中用来指定展示那些字段

复制代码
GET /es_db/_search{"query": {"match_all": {}},"_source": ["name","address"]}​#在查询中过滤#不查看源数据,仅查看元字段GET /es_db/_search{"_source": false,"query": {"match_all": {}}}​#只看以obj.开头的字段GET /es_db/_search{"_source": "obj.*","query": {"match_all": {}}}​

2.3 返回指定条数size

size 关键字: 指定查询结果中返回指定条数。默认返回值10条。

复制代码
get /es_db/_search{  "query":{    "match_all": {}  },  "size":2}​

2.4 分页查询from&size

size:显示应该返回的结果数量,默认是 10

from:显示应该跳过的初始结果数量,默认是 0

from 关键字用来指定起始返回位置,和size关键字连用可实现分页效果

复制代码
{  "query":{    "match_all": {}  },  "from": 0,  "size":2}​

2.5 指定字段排序sort

注意:会让得分失效。

复制代码
get /es_db/_search{  "query":{    "match_all": {}  },  "sort":{    "age":"desc"  }}​

我就是我,是颜色不一样的烟火。
我就是我,是与众不同的小苹果。

à悟纤学院:https://t.cn/Rg3fKJD

学院中有Spring Boot 相关的课程!点击「阅读原文」进行查看!

SpringBoot视频:http://t.cn/A6ZagYTi

SpringBoot交流平台:https://t.cn/R3QDhU0

SpringSecurity5.0视频:http://t.cn/A6ZadMBe

ShardingJDBC分库分表:http://t.cn/A6ZarrqS

分布式事务解决方案:http://t.cn/A6ZaBnIr

JVM内存模型调优实战:http://t.cn/A6wWMVqG

Spring入门到精通:https://t.cn/A6bFcDh4

大话设计模式之爱你:https://dwz.cn/wqO0MAy7

相关推荐
广州腾科助你拿下华为认证1 小时前
华为考试:HCIE数通考试难度分析
大数据·华为
在未来等你3 小时前
Elasticsearch面试精讲 Day 17:查询性能调优实践
大数据·分布式·elasticsearch·搜索引擎·面试
大数据CLUB6 小时前
基于spark的澳洲光伏发电站选址预测
大数据·hadoop·分布式·数据分析·spark·数据开发
ratbag6720136 小时前
当环保遇上大数据:生态环境大数据技术专业的课程侧重哪些领域?
大数据
计算机编程小央姐8 小时前
跟上大数据时代步伐:食物营养数据可视化分析系统技术前沿解析
大数据·hadoop·信息可视化·spark·django·课程设计·食物
智数研析社9 小时前
9120 部 TMDb 高分电影数据集 | 7 列全维度指标 (评分 / 热度 / 剧情)+API 权威源 | 电影趋势分析 / 推荐系统 / NLP 建模用
大数据·人工智能·python·深度学习·数据分析·数据集·数据清洗
全栈工程师修炼指南9 小时前
告别手动构建!Jenkins 与 Gitlab 完美协作,根据参数自动化触发CI/CD流水线实践
运维·ci/cd·自动化·gitlab·jenkins
潘达斯奈基~9 小时前
《大数据之路1》笔记2:数据模型
大数据·笔记
寻星探路9 小时前
数据库造神计划第六天---增删改查(CRUD)(2)
java·大数据·数据库
翰林小院11 小时前
【大数据专栏】流式处理框架-Apache Fink
大数据·flink