ElasticSearch:查询操作合集

先看下我的数据:
在这里插入图片描述

1、查询所有文档:

GET /cartest/_search

或者

GET /cartest/_search
{"query": {"match_all": {}}
}

2、匹配查询:

match匹配类型查询,会把查询条件进行分词,然后进行查询,多个词条之间是or的关系

GET /cartest/_search
{"query": {"match": {"name": "风云"}}
}

在这里插入图片描述

3、字段匹配查询:

multi_match 与match类似,不同的是它可以在多个字段中查询。

在这里插入图片描述

4、关键字精准查询:

这个term查询不对查询条件进行分词,
要是text文本类型就会出错,keyword可以进行此类查询

这里我们查 name:风云 就什么都没查到
在这里插入图片描述
向 cartest 中再加一个keyword类型的class字段

PUT /cartest/_mapping
{"properties": {"class":{"type": "keyword","index": true}} 
}

在这里插入图片描述
添加一条数据

POST /cartest/_doc
{"name": "wang","page": "cn","say": "欢迎","time": "2020-12-11","class": "box"
}

在这里插入图片描述
我们再次查询:

GET /cartest/_search
{"query": {"term": {"class": {"value": "box"}}}
}

在这里插入图片描述

5、多关键字查询:

terms 查询和term 查询一样,但它允许你指定多值进行匹配。
如果这个字段包含了指定值中的任何一个值,那么这个文档满足条件,类似于 mysql 的 in
当然,一定要记得查询的字段为关键字keyword类型,不然查不到内容

GET /cartest/_search
{"query": {"terms": {"class": ["box", "box-1"]}}
}

在这里插入图片描述

6、组合查询:

bool把各种其它查询通过must(必须 )、must_not(必须不)、should(应该)的方式进行组合

在这里插入图片描述

7、范围查询:

操作符说明
gt大于>
gte大于等于>=
lt小于<
lte小于等于<=

查询 num 100 - 150之间的数据

GET /cartest/_search
{"query": {"range": {"num": {"gte": 100,"lte": 150}}}
}

在这里插入图片描述
查询 04 - 06号之间的数据
在这里插入图片描述

8、分页查询+排序:

也可设置多字段排序,主次为代码顺序

GET /cartest/_search
{"query": {"match_all": {}},"sort": [{"num": {"order": "desc"}}],"from": 0,"size": 3
}

在这里插入图片描述
当然也可以按时间排序
在这里插入图片描述
9、查询需要的字段

GET /cartest/_search
{"_source": ["name", "time", "num"],"query": {"match_all": {}},"sort": [{"time": {"order": "desc"}}],"from": 0,"size": 3
}

在这里插入图片描述
10、过滤查询:

includes:来指定想要显示的字段
excludes:来指定不想要显示的字段

只显示 name time 字段
在这里插入图片描述
不显示 name time 字段
在这里插入图片描述

11、聚合查询:

聚合允许使用者对 es 文档进行统计分析,类似与关系型数据库中的 group by,当然还有很
多其他的聚合,例如取最大值、平均值等等。

获取 num 最大值,size是 hits中数值的数量

GET /cartest/_search
{"aggs": {"max_age": {"max": {"field": "num"}}},"size": 0
}

在这里插入图片描述
平均值:
在这里插入图片描述
12、正则查询

GET /cartest/_search
{"query": {"bool": {"must": [{"regexp": {"name": ".*云.*"}}]}}
}

在这里插入图片描述
13、多层数据查询

GET /testes/_search
{"query": {"match": {"fun.active": "进行中"}}
}

在这里插入图片描述
14、nested:嵌套数据类型,可以看成是一个特殊的对象类型,可以让对象数组独立检索
一个例子说明nested类型的作用
(1)Nested:嵌套对象是object数据类型的专用版本,能够对 对象数组进行彼此独立地索引和查询。

(2)对象数组默认组织形式

内部对象字段数组的实际存储机制与我们想的不一样。Lucene没有内部对象的概念,因为ElasticSearch将对象层次结构扁平化为一个字段名和字段值的列表。例如下面文档。

PUT user/_doc/1
{"group" : "man","userName" : [ {"first" : "张","last" :  "三"},{"first" : "李","last" :  "四"}]
}

这里想要查询first为“张”,last为“四”的数据,按照我们的理解应该没有这种数据。按如下语句查询。

GET /user/_search
{"query":{"bool":{"must":[{"match":{"userName.first":"张"}},{"match":{"userName.last":"四"}}]}}
}

查询结果如下:居然查询到了。这显然不符合我们的预期。
在这里插入图片描述
这个原因就是前面所说的lucene没有内部对象的概念,所谓的内部对象实际是被扁平化为一个简单的字段名称和值列表。文档内部存储是这个样子的:

{"group" :        "human","sex" :          "man","userName.first" : [ "张", "李" ],"userName.last" :  [ "三", "四" ]
}

显然 userName.first 和 userName.last 字段平面化为多值字段,之前的关联性丢失,查询就不会得到预期的结果。

那么要如何实现自己想要的语义呢? —— 显然就是本文想要说的nested了。

// 第一步先声明类型
PUT order
{"mappings": {"properties": {"goods_list": {"type": "nested","properties": {"name": {"type": "text"}}}}}
}
// 第二步 添加数据
PUT /order/_doc/1
{"total_price": 126,"goods_list": [{"name": "xiaomi","price": 30},{"name": "guang","price": 19},{"name": "liang","price": 20}]
}
// 查询
GET order/_search
{"query": {"bool": {"must": [{"nested": {"path": "goods_list","query": {"bool": {"must": [{"match": {"goods_list.name": "guang"}},{"match": {"goods_list.price": 20}}]}}}}]}}
}

这时是查不出来的,符合预期
在这里插入图片描述
这样就可以查询到了
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/3334.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【树莓派】如何用电脑连接树莓派的远程桌面,灰屏解决

要使用VNC桌面连接到树莓派&#xff0c;你需要确保已经安装并启动了VNC服务器。以下是连接到树莓派的步骤&#xff1a; 在树莓派上启动VNC服务器&#xff1a; 打开终端或SSH连接到你的树莓派。输入以下命令以安装RealVNC的VNC服务器&#xff1a;sudo apt update sudo apt insta…

PLSQL数据库

目录 什么是PLSQL数据库 PL数据库的实现方法 PL数据库的基本语法 1.作用 2.语法 3.赋值输出 4.引用 5.异常处理 6.if 判断 7.loop循环 8.while循环 9.for循环 10.游标 11.参数游标 12.索引 13.分区表 什么是PLSQL数据库 PL/SQL&#xff08;Procedure Language/…

微前端通信机制及其实现

微前端通信机制是指在微前端架构中&#xff0c;不同的微应用之间进行通信的方式和机制。微前端通信机制的实现可以通过以下几种方式&#xff1a; 事件总线&#xff08;Event Bus&#xff09;&#xff1a;微前端架构中的主应用可以创建一个事件总线&#xff0c;用于发布和订阅事…

【C++航海王:追寻罗杰的编程之路】C++11(二)

目录 C11(上) 1 -> STL中的一些变化 2 -> 右值引用和移动语义 2.1 -> 左值引用和右值引用 2.2 -> 左值引用与右值引用比较 2.3 -> 右值引用使用场景与意义 2.4 -> 右值引用引用左值及其更深入的使用场景分析 2.5 -> 完美转发 C11(上) 1 -> STL…

为什么要建设数字化校园?

数字化校园的建设能够使用户能够随时随地的在有互联网的地方获取到校园的信息&#xff0c;而且由于这些信息都是有校园的管理部门发布的&#xff0c;所以这样就能保证信息的权威性。数字化校园平台还能让学校内部建立起相对独立的网络体系&#xff0c;能有效的消除“信息化孤岛…

Leetcode 3121. Count the Number of Special Characters II

Leetcode 3121. Count the Number of Special Characters II 1. 解题思路2. 代码实现 题目链接&#xff1a;3121. Count the Number of Special Characters II 1. 解题思路 这一题算是一个分类讨论的问题吧&#xff0c;我们只需要对每一个字符考察其前序当中所有出现过的字符…

Qt实现XYModem协议(四)

1 概述 XMODEM协议是一种使用拨号调制解调器的个人计算机通信中广泛使用的异步文件运输协议。这种协议以128字节块的形式传输数据&#xff0c;并且每个块都使用一个校验和过程来进行错误检测。使用循环冗余校验的与XMODEM相应的一种协议称为XMODEM-CRC。还有一种是XMODEM-1K&am…

Leetcode 4.21

1.罗马数字转整数 用unordered_map去存罗马数字对应的数值&#xff0c;分情况讨论&#xff0c;把所有情况都列出来即可 class Solution { public:unordered_map<char, int> mp {{I, 1},{V, 5},{X, 10},{L, 50},{C, 100},{D, 500},{M, 1000}};int romanToInt(string s)…

Kubernetes TDengine 系列|安装 TDengine 的 Grafana 插件|Grafana监控TDengine数据

为了让Grafana 能够监控到TDengine 数据&#xff0c;快速集成搭建数据监测报警系统&#xff0c;所以直接安装TDengine 插件。 目录 一、安装 TDengine 的 Grafana 插件1、下载TDengine grafana插件2、解压到指定目录3、配置未签名插件 二、配置数据源&#xff0c;简单查询TDen…

【已解决】VMware虚拟机中出现无法将“iso文件”当做CD-ROM映像进行连接:找不到该文件的错误

报错 在VMware上运行虚拟机时报错&#xff1a;VMware虚拟机中出现无法将“iso文件”当做CD-ROM映像进行连接&#xff1a;找不到该文件的错误 原因分析 找不到这个iso文件了&#xff0c;检查文件位置 解决方案 找到iso文件&#xff0c;然后在VM中编辑虚拟机中这个文件的位置…

算法:堆(优先队列)

堆&#xff08;优先队列&#xff09;分为最大堆和最小堆。 python实现 class HEAPQ:# 最小堆def __init__(self, l):self.l lself.build()def build(self):n len(self.l)end n // 2for i in range(end, -1, -1):self.update(i)def update(self, i):l self.ln len(l)idx …

前端点击地图上的位置获取当前经纬度

地图封装组件 <template><div id"container"></div> </template> <script>import AMapLoader from amap/amap-jsapi-loader;export default {name: "Mapview",props:{mapinfo:{type:Object,default:function(){return {}}}…

AI-数学-高中-45函数单调性与导数

原作者视频&#xff1a;【导数】【一数辞典】5函数单调性与导数&#xff08;重要&#xff09;_哔哩哔哩_bilibili 导数最重要作用&#xff1a;判断函数单调性。 示例&#xff1a;

新风口下的必应bing国内广告投放该怎么做?

必应Bing作为全球搜索引擎市场的重要参与者&#xff0c;正逐渐显现出其在国内市场的独特价值和潜力。随着互联网生态的多元化发展&#xff0c;必应Bing凭借其高质量用户群和精准投放能力&#xff0c;成为了企业寻求新增长点的新风口。 一、洞察先机&#xff0c;精准定位市场 …

运营版游戏陪玩平台源码/tt语音聊天/声优服务/陪玩系统源码开黑/约玩源码

简述 一个人的游戏叫孤独&#xff0c;一群人的游戏才是乐趣&#xff0c;随着电竞产业在国内的快速发展&#xff0c;游戏陪练行业也迅速成长&#xff0c;现在很多游戏玩家为了追求更高质量的游戏体验感&#xff0c;往往会在玩游戏的过程中找陪练&#xff0c;通过陪玩系统进行预…

python绘制等高线图

在Python中&#xff0c;可以使用matplotlib和numpy库来绘制等高线图&#xff08;contour plot&#xff09;。等高线图通常用于显示三维数据的二维投影&#xff0c;其中颜色或线条的密度表示第三维的值。 以下是一个简单的示例&#xff0c;说明如何使用这些库来创建等高线图&am…

欧姆龙FZ5-L355维修工业视觉系统主机电脑主板Omron FZ5 L355深圳捷达工控维修

工业计算机&#xff1a;坚固耐用&#xff0c;为机器视觉做好准备 由于其重要性和及时性&#xff0c;质量控制已被确定为生产的主要瓶颈之一。借助机器视觉&#xff0c;物联网设备和机器视觉系统协同工作&#xff0c;以超人的准确性和速度实现质量控制流程自动化。然而&#xf…

Recat学习

1&#xff0c;创建 项目搭建 npm config set registry http://registry.npm.taobao.org/ // 安装yarn npm install -g yarn // 安装cnpm npm install -g cnpm -registryhttps://registry.npm.taobao.org //设置国内源 yarn config set registry https://registry.npm.taobao.o…

租用新加坡服务器部署wordpress如何加速?

要加速在新加坡服务器上部署WordPress&#xff0c;可以采取以下一些措施&#xff1a; 1. 选择性能优越的主机提供商&#xff1a;选择具有优质硬件、高性能网络和优化服务器配置的主机提供商。确保服务器的硬件资源充足&#xff0c;网络连接稳定&#xff0c;以提高WordPress网站…

常用的JDK9-JDK17的一些新增语法特性

目录 1.前言2.一些新增的特性2.1 yield关键字2.2 var关键字2.3 空指针异常2.4 密封类2.5 接口中的私有方法2.6 instanceof2.7 其他 1.前言 从springboot3.0开始&#xff0c;已经不⽀持JDK8了。参考资料 &#xff1a;Spring官方博客。从3.0开始&#xff0c;转变为JDK17。 官方…