ElasticSearch之search API

写在前面

本文看下查询相关内容,这也是我们在实际工作中接触的最多的,所以有必要好好学习下!

1:查询的分类

主要分为如下2类:

1:基于get查询参数的URI search
2:基于post body的request body search,需要用到es的dsl(domain sepecific language)

不管是哪种查询方式,都需要指定要查询的索引,如下几种方式:
在这里插入图片描述

分别来看下URI search和request body search。

另,测试数据参考这里 。

2:URI search

这种方式是通过在uri上设置参数来进行查询,可以设置的参数如下:

1:q 使用query string syntax,来指定要查询值,相对比较复杂,后边会单独看下
2:df,defaut field,默认字段,如果是不指定的话则会对所有字段查询
3:sort 排序
4:from,size,分页
5:profile,可以查看查询是如何被执行的

2.1:泛查询

  • 查询包含2012的文档
    在这里插入图片描述
    来看下其查询方式,在 “profile”->“shards”->“searches”,如下图:
    在这里插入图片描述
  • 泛查询指定df
    在这里插入图片描述
    看下查询方式:
    在这里插入图片描述

2.2:指定字段查询

在q中指定字段:
在这里插入图片描述
查询方式:
在这里插入图片描述

2.3:Term VS Phrase

假定现在我们要查询title中包含”Beautiful Mind“的文档信息,第一个想法可能是使用下边这种方式来查询:
在这里插入图片描述
但是,并不是我们期望的结果,我们通过查询方式来看下:
在这里插入图片描述
此时Mind是泛查询。.

同sql语句:

select * from t where title like "%Beautiful%"
union
(select * from t where title like "%Mind%"unionselect * from t where id like "%Mind%"unionselect * from t where year like  "%Mind%"...
)

那我们如何让es把”Beautiful Mind“当作一句话来查询呢,这就要用到PhraseQuery,也比较简单,只需要使用""括起来就行了:
在这里插入图片描述
看下查询方式:
在这里插入图片描述

2.4:分组查询

在这里插入图片描述

2.4.1:AND OR

  • AND
    在这里插入图片描述
    同写法:
    在这里插入图片描述
    即系统默认就是按照带+好处理的,即must,如果想要查询包含Beautiful但是不包含Mind的,则在Mind前用-
    在这里插入图片描述
    查询的过程是先执行如下的TermQuery title:beautiful查询到title包含Beautiful的结果集1,然后再执行TermQuery title:Mind查询到title包含Mind的结果集2,然后取A和B的差集获取最终结果:
    在这里插入图片描述
  • OR
    在这里插入图片描述
    和AND比较类似,可对比学习。

2.4.2:范围查询

在这里插入图片描述
实例们:
在这里插入图片描述

2.4.3:通配符,模糊,正则

在这里插入图片描述
实例们:
在这里插入图片描述

3:request body search

3.1:查询所有

在这里插入图片描述
查询方式可以看到是MatchAllDocsQuery

3.2:查询所有

在这里插入图片描述
可以看到虽然是分页查询,但是查询方式和全量查询是一样的,都是MatchAllDocsQuery,并且查询越往后的数据,效率越低,所以es最好不要用来做分页查询,通过其他方案来实现。

3.3:排序

在这里插入图片描述
查询方式可以看到是MatchAllDocsQuery,所以效率也不会高,要慎用。

3.4:只返回指定字段

在这里插入图片描述
正常相当于sqlselect *这里相当于sqlselect order_date,order_id

3.5:脚本字段

在这里插入图片描述
相当于sqlselect concat('order_date', '_hello') as 'my_custom_field'

3.6:match查询

在这里插入图片描述
效果同uri searchGET movies/_search?q=title:(Last OR Christmas),即默认的操作符是OR,可以使用operator来显式指定操作符:
在这里插入图片描述

3.7:match_phrase 短语查询

在这里插入图片描述
等同于uri searchGET movies/_search?q=title:"Last Christmas"
允许中间有其他单词,可如下搜索:
在这里插入图片描述
等同于uri searchGET movies/_search?q=title:"one love"~1

3.8:query_string 查询

dsl的query下写query_string有点像泛查询。
在这里插入图片描述
同uri searchGET movies/_search?q=on。其实就是不同的写法而已,多一种写法,多个选择,适应更多的应用场景。
当然也可以指定字段,增加default_field即可:
在这里插入图片描述

3.9:simple_query_string 查询

dsl的query下写simple_query_string有点像泛查询。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
有需要用query string就行了,这里知道即可。

写在后面

参考文章列表

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

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

相关文章

排序算法的时间复杂度存在下界问题

对于几种常用的排序算法,无论是归并排序、快速排序、以及更加常见的冒泡排序等,这些排序算法的时间复杂度都是大于等于O(n*lg(n))的,而这些排序算法存在一个共同的行为,那就是这些算法在对元素进行排序的时候,都会进行…

双指针算法 最长连续不重复子序列

最长连续不重复子序列 C代码实现: #include<iostream> using namespace std;const int N 1000002; int a[N], count[N];int main() {int result 0;int n;// 输入数组长度cin >> n;// 输入数组元素for (int i 0; i < n; i) {cin >> a[i];}// 使用滑动…

【开源项目阅读】Java爬虫抓取豆瓣图书信息

原项目链接 Java爬虫抓取豆瓣图书信息 本地运行 运行过程 另建项目&#xff0c;把四个源代码文件拷贝到自己的包下面 在代码爆红处按ALTENTER自动导入maven依赖 直接运行Main.main方法&#xff0c;启动项目 运行结果 在本地磁盘上生成三个xml文件 其中的内容即位爬取…

以用户为中心,酷开科技荣获“消费者服务之星”

在企业顺应消费升级的道路中&#xff0c;企业自身不仅要着力强化对于消费者服务意识的提升&#xff0c;并且要树立诚信自律的行业示范带头作用&#xff0c;助力消费环境稳中向好&#xff0c;不断满足人民群众对美好生活的期待。企业的发展需要消费者的认可&#xff0c;酷开科技…

iPhone解锁 AnyMP4 iPhone Unlocker

AnyMP4 iPhone Unlocker是一款功能强大的iPhone解锁软件&#xff0c;旨在帮助用户轻松解决iPhone密码忘记、设备锁定等问题。无论是屏幕密码、指纹解锁还是Face ID&#xff0c;该软件都能提供有效的解决方案。 这款软件支持多种iPhone型号&#xff0c;包括最新的iPhone 14系列…

【EEG信号处理】对信号进行模拟生成

生成信号的目的还是主要是为了学习和探究后面的分析方法&#xff1b;本文主要是对方法进行整理 瞬态 transient 瞬态信号是指的是一瞬间信号上去了&#xff0c;这种情况我们可以用在时域上高斯模拟 peaktime 1; % seconds width .12; ampl 9; gaus ampl * exp( -(EEG.tim…

真正免费的文件恢复软件easyrecovery2024中文版

easyrecovery数据恢复软件是一款广受好评的数据恢复工具&#xff0c;它能够有效地帮助用户恢复各种类型的文件。无论是照片、视频、音乐还是文档&#xff0c;都能轻松地找回这些重要文件。操作安全、用户可自主操作的数据恢复方案&#xff0c;它支持从各种各样的存储介质恢复删…

单片机最小系统是什么?包含哪几个部分?

单片机最小系统是什么&#xff1f;包含哪几个部分&#xff1f; 在开始前我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「单片机的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&…

【踏雪无痕的痕一】——认知的心病

目录 一、背景介绍二、思路&方案三、过程1.教育是最大的"炸片"2.逻辑对等性的认知(时间的保证)3.不要去猜一个人怎么想&#xff0c;要看一个人怎么做4.改变一个人的基础5.你想过和你能过上什么生活完全取决于你自己 四、总结 一、背景介绍 大多数人都只愿意看到…

【深度学习】pytorch 与 PyG 安装(pip安装)

【深度学习】pytorch 与 PyG 安装&#xff08;pip安装&#xff09; 一、PyTorch安装和配置&#xff08;一&#xff09;、安装 CUDA&#xff08;二&#xff09;、安装torch、torchvision、torchaudio三个组件&#xff08;1&#xff09;下载镜像文件&#xff08;2&#xff09;创建…

【前端高频面试题--Vue基础篇】

&#x1f680; 作者 &#xff1a;“码上有前” &#x1f680; 文章简介 &#xff1a;前端高频面试题 &#x1f680; 欢迎小伙伴们 点赞&#x1f44d;、收藏⭐、留言&#x1f4ac;前端高频面试题--Vue基础篇 Vue基本原理双向绑定与MVVM模型Vue的优点计算属性与监听属性计算属性监…

使用QZipWriter来压缩文件

Qt 自带的压缩QZipWriter和解压QZipReader详解~含Demo-CSDN博客 示例代码1&#xff1a; 压缩一个文件&#xff1a; #include "qzipwriter_p.h" #include "qfileinfo.h" #include <QDebug> int main(int argc, char *argv[]) {QApplication a(argc…