当前位置: 首页 > news >正文

ES SearchAPI----Query DSL语言

文章目录

  • Getting Started
    • match_all查询全部
    • sort排序
    • from\size分页
    • _source指定字段
  • match匹配查询
  • match_phrase短语匹配
  • multi_match多字段匹配
  • range范围查询
  • bool复合查询
    • must必须匹配,可贡献得分
    • must_not必须不匹配,可贡献得分
    • should可有可无,可贡献得分,不影响记录数
    • filter条件再过滤,不贡献得分
  • term和match
  • match_phrase 和 .keyword

Query DSL:Elasticsearch 提供了一个可以执行查询的JSON 风格的 DSL (domain-specific language 领域特定语言)。这个被称为 Query DSL

ES 支持两种基本方式检索,通俗的讲第二种检索方式的请求体就是DSL语言

  • 一个是通过使用 REST request URI 发送检索参数(ur+检索参数)
  • 另一个是通过使用 REST request body 来发送它们(uri+请求体)

接下来的实验操作都是基于测试数据(account.json)进行的。

Getting Started

match_all查询全部

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

sort排序

query:指定查询的条件
sort:进行排序

GET /bank/_search
{"query": {"match_all": {}},"sort": [{"FIELD": {"order": "desc"}}]
}

在这里插入图片描述

from\size分页

默认每次查询10条数据,可以使用fromsize指定每页的记录数,下面的DSL表示每页查询5条数据,这是第一页
from=(pageNum-1) * pageSize

GET /bank/_search
{"query": {"match_all": {}},"sort": [{"balance": {"order": "asc"}}],"from": 0,"size": 5
}

_source指定字段

"_source"可以指定结果集中只显示哪些字段

GET /bank/_search
{"query": {"match_all": {}},"sort": [{"balance": {"order": "asc"}}],"_source": ["firstname","lastname","gender"], "from": 5,"size": 5
}

在这里插入图片描述

match匹配查询

基本语法如下所示:

GET /bank/_search
{"query": {"match": {"FIELD": "TEXT"}}
}
  1. 如果match匹配非字符串字段,那么就是精确查询
  2. 如果match匹配字符串字段,那么就是模糊查询,也叫全文检索
# 匹配非字符串字段,就是精确查询
GET /bank/_search
{"query": {"match": {"account_number": 20}}
}
# 匹配字符串字段,就是模糊查询
# 查询出19条数据,它是分词查询,这些记录按照各自的评分进行排序
GET /bank/_search
{"query": {"match": {"address": "mill lane"}}
}

match_phrase短语匹配

前面使用match匹配查询"address": "mill lane"它是进行的分词查询,如下图
在这里插入图片描述
但有时候就需要将mill lane作为一个整体(短语)进行匹配,这个时候就可以使用match_phrase进行匹配,它会将mill lane作为整体,只要Value中包含mill lane就会被匹配成功

GET /bank/_search
{"query": {"match_phrase": {"address": "mill lane"}}
}

在这里插入图片描述

multi_match多字段匹配

比如期望查询出address或state这两个字段中都包含mill,就好比SQL的如下语句

select * from table_name where address like `%mill%` or state like `%mill%`

基本语法格式如下所示;其中query用来指定匹配的值,fields用来指定将从哪些字段中去匹配该值

GET /bank/_search
{"query": {"multi_match": {"query": "","fields": []}}
}

在这里插入图片描述
多字段匹配的时候会不会进行分词查询呢?
在这里插入图片描述

range范围查询

基本格式

GET bank/_search
{"query": {"range": {"FIELD": {"gte": 10,"lte": 20}}}
}

bool复合查询

bool用来做复合查询;复合语句可以合并任何其他查询语句,包括复合语句,了解这一点很重要的,这就意味着,复合语句之间可以相互嵌套,可以表达非常复杂的逻辑

must必须匹配,可贡献得分

must:必须达到must列举的所有条件,并将有助于得分

期望查询出gender=’M‘并且address中包含’mill‘的记录

# select * from table_name where gender='M' and address like '%mill%'
GET bank/_search
{"query": {"bool": {"must": [{"match": {"gender": "M"}},{"match": {"address": "mill"}}]}},"_source": ["gender","address"]
}

在这里插入图片描述

must_not必须不匹配,可贡献得分

记录一下格式,注意层级格式

# gender=M’ and address like '%mill%' and age <> 28
GET bank/_search
{"query": {"bool": {"must": [{"match": {"gender": "M"}},{"match": {"address": "mill"}}],"must_not": [{"match": {"age": 28}}]}},"_source": ["gender","address","age"]
}

在这里插入图片描述

should可有可无,可贡献得分,不影响记录数

should:表示可有可无,如果匹配上就会提高该记录的得分,如果没有匹配上也不会影响查询结果集的数量

在这里插入图片描述

filter条件再过滤,不贡献得分

前面的must、must_not筛选出满足条件的记录,并贡献得分;should不会对满足must、must_not的记录数产生任何影响,但是它会对匹配should条件的记录贡献得分;而filter却不会贡献得分,只会在must、must_not的基础上对结果进行再过滤。

如下;在满足must的基础上,再筛选出age大于10并且小于30的记录
GET bank/_search
{"query": {"bool": {"must": [{"match": {"gender": "M"}},{"match": {"address": "mill"}}],"filter": [{"range": {"age": {"gte": 10,"lte": 30}}}]}},"_source": ["age","lastname","address"]
}

在这里插入图片描述

term和match

term 和 match 一样。匹配某个属性的值。只是全文检素(text)字段用 match,其他非text 字段匹配用 term。
在这里插入图片描述

match_phrase 和 .keyword

  • match_phrase:只要包含该短语就会被匹配上
  • ***.keyword: 必须是精确匹配

下图使用address字段进行了验证
在这里插入图片描述

相关文章:

ES SearchAPI----Query DSL语言

文章目录 Getting Startedmatch_all查询全部sort排序from\size分页_source指定字段 match匹配查询match_phrase短语匹配multi_match多字段匹配range范围查询bool复合查询must必须匹配&#xff0c;可贡献得分must_not必须不匹配&#xff0c;可贡献得分should可有可无&#xff0c…...

【STM32】HAL库——串口中断只接收到两个字符

【STM32】HAL库——串口中断只接收到两个字符 一、问题描述二、解决方法三、原因分析 一、问题描述 环境&#xff1a;STM32CubeMX(6.7.0)MDK-ARM(V5.36.0.0)STM32F103C8T6 使用XCOM发送字符串&#xff08;总共8个字符&#xff09;&#xff0c;单片机进行解析为ModBus协议失败…...

页面html结构导出为word或pdf

一、使用场景和原理 需要将当前页面(一般详情页面)或者dom容器中的内容保存/截图&#xff0c;并且导出为word或者pdf 导出word:获取dom结构直接转化为word导出 导出pdf:用canvas生成当前页面或者dom范围的快照&#xff0c;参考截图功能&#xff0c;然后将生成的canvas转为pdf内…...

Object.prototype.toString.call() 和 instanceOf 和 Array.isArray() 详解

解析: 理解 Object.prototype.toString.call(), instanceof, 和 Array.isArray() 是 JavaScript 中重要的类型检查工具。以下是一个较为详细的解释和示例代码&#xff0c;帮助你理解它们的工作原理和使用场景 Object.prototype.toString.call()&#xff1a; Object.prototyp…...

自学(黑客技术)方法——网络安全

如果你想自学网络安全&#xff0c;首先你必须了解什么是网络安全&#xff01;&#xff0c;什么是黑客&#xff01;&#xff01; 1.无论网络、Web、移动、桌面、云等哪个领域&#xff0c;都有攻与防两面性&#xff0c;例如 Web 安全技术&#xff0c;既有 Web 渗透2.也有 Web 防…...

CVE-2023-46227 Apache inlong JDBC URL反序列化漏洞

项目介绍 Apache InLong&#xff08;应龙&#xff09;是一站式、全场景的海量数据集成框架&#xff0c;同时支持数据接入、数据同步和数据订阅&#xff0c;提供自动、安全、可靠和高性能的数据传输能力&#xff0c;方便业务构建基于流式的数据分析、建模和应用。 项目地址 h…...

MySQL几种方法的数据库备份

MySQL几种方法的数据库备份_mysql备份的几种方式-CSDN博客 MySQL有几个方法来备份 最近博客一直想写点。可是不知道写什么&#xff0c;感觉自己近期的知识没有什么添加&#xff0c;今天想到了一篇能够写的博客。曾经试过依据data目录备份MySQL。可是从来没有成功过。前几天帮助…...

CI/CD:GitLab-CI 自动化集成/部署 JAVA微服务的应用合集

CI/CD&#xff1a;GitLab-CI 自动化集成/部署 JAVA微服务的应用合集 CI/CD&#xff1a;GitLab-CI 自动化集成/部署 JAVA微服务的应用合集安装DockerGitLabGitLab-Runner阿里云容器仓库 GitLab-CIJava微服务的GitLab-CI应用 CI/CD&#xff1a;GitLab-CI 自动化集成/部署 JAVA微服…...

Flask 上传文件,requests通过接口上传文件

这是一个使用 Flask 框架实现文件上传功能的示例代码。该代码定义了两个路由&#xff1a; /upload&#xff1a;处理文件上传请求。在该路由中&#xff0c;我们首先从请求中获取上传的文件&#xff0c;然后将文件保存到本地磁盘上&#xff0c;并返回一个字符串表示上传成功。 /…...

kvm webvirtcloud 如何添加直通物理机的 USB 启动U盘

第一步&#xff1a;查看USB设备ID 在物理机上输入 lsusb 命令 rootubuntu:/media/usb1# lsusb Bus 002 Device 002: ID 0781:5581 SanDisk Corp. Ultra Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub Bus 001 Device 004: ID 0424:2514 Microchip Technolo…...

html- a标签包裹img标签, 点击图片无法跳转问题记录及解决方法

html- a标签包裹img标签, 点击图片无法跳转问题记录及解决方法 首先明确我们的目标, 就是a标签包裹的内容, 都能点击后以后直接跳转 可以通过更改html结构和css解决: <div v-for"(item, index) in newsData" :key"index" class"flexcol">&…...

Halcon转OpenCV实例--保险丝颜色识别(附源码)

导 读 本文主要介绍Halcon转OpenCV实例--保险丝颜色识别(附源码)。 实例来源 实例来源于Halcon例程color_fuses.hdev--classify fuses by color 下面是Halcon实例代码和实现效果: * color_fuses.hdev: classify fuses by colordev_update_window (off)* ***** step: set up …...

制造业中的微小缺陷检测——应用场景分析与算法选择(YoloV8/CANet)

一、缺陷检测任务 缺陷检测的任务通常可以分为三个主要阶段&#xff0c;包括缺陷分类、缺陷定位和缺陷分割。 1.缺陷分类 缺陷分类是检测过程的第一步&#xff0c;目的是将检测到的缺陷区域分类为不同的类别&#xff0c;通常是根据缺陷的性质或类型进行分类。分类的类别包括…...

支持多校 微信课表小程序源码 排课小程序源码 支持导入课表 情侣课表 背景设置

练手Lab课程表小程序源码是一个基于thinkphp系统进行开发的前后端分离系统。 源码功能介绍 1、情侣功能 2、情侣间留言 3、情侣间互相设置课程表背景 4、自己日、周课程表背景设置 5、教务系统课程表导入 6、导入别人分享的课表 7、导入别人分享的单课 8、多校支持 9…...

谷歌计划从Chrome119起测试IP隐私保护功能

目前&#xff0c;谷歌正为Chrome浏览器测试一项新的“IP保护”功能。因为该公司认为用户IP地址一旦被黑客滥用或秘密跟踪&#xff0c;都可能导致用户隐私信息泄露。 而这项功能可通过代理服务器屏蔽用户的IP地址&#xff0c;以增强用户的隐私性&#xff0c;这样就可以尽量在确…...

【技能树笔记】网络篇——练习题解析(九)

目录 前言 一、OSPF双栈 1.1 OSPFv3 LSA 1.2 OSPFv3 二、ISIS双栈 2.1 ISISv6 2.2 ISIS高级特性 三、BGP双栈 四、PIM双栈 总结 &#x1f308;嗨&#xff01;我是Filotimo__&#x1f308;。很高兴与大家相识&#xff0c;希望我的博客能对你有所帮助。 &#x1f4a1;本文由Filot…...

c++ qt连接操作sqlite

qt客户端编程,用到数据库的场景不多,但是部分项目还是需要数据库来保存同步数据,客户端用到的数据库,一般是sqlite。 Qt提供了数据库模块,但是qt本身的数据库模块并不好用,会有各种问题, 建议大家不要,可以自己封装数据库的操作。本篇博客介绍qt连接操作sqlite。 sqlit…...

Qt之自定义QStringListModel设置背景色和前景色

一.效果 二.实现 QStringListModel里只实现了Qt::EditRole和Qt::DisplayRole,不能直接设置背景色和前景色,所以我们要继承QStringListModel,重写其中的data和setData方法,使其支持Qt::ForegroundRole和Qt::BackgroundRole。 QHStringListModel.h #ifndef QHSTRINGLISTMO…...

人工智能基础_机器学习001_线性回归_多元线性回归_最优解_基本概念_有监督机器学习_jupyter notebook---人工智能工作笔记0040

线性和回归,就是自然规律,比如人类是身高趋于某个值的概率最大,回归就是通过数学方法找到事物的规律. 机器学习作用: 该专业实际应用于机器视觉、指纹识别、人脸识别、视网膜识别、虹膜识别、掌纹识别、专家系统、自动规划、智能搜索、定理证明、博弈、自动程序设计、智能控制…...

Linux 错误处理(字符设备基础三)

在Linux字符设备驱动中&#xff0c;即使是最简单的注册字符设备&#xff0c;也存在注册失败的可能性&#xff0c;因此在之前编写的驱动代码中采用检查函数返回值的方式&#xff0c;确认函数是否成功执行 一、goto 语句 在编写驱动程序时&#xff0c;驱动程序应该提供函数执行失…...

XCTF-web-easyupload

试了试php&#xff0c;php7&#xff0c;pht&#xff0c;phtml等&#xff0c;都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接&#xff0c;得到flag...

【杂谈】-递归进化:人工智能的自我改进与监管挑战

递归进化&#xff1a;人工智能的自我改进与监管挑战 文章目录 递归进化&#xff1a;人工智能的自我改进与监管挑战1、自我改进型人工智能的崛起2、人工智能如何挑战人类监管&#xff1f;3、确保人工智能受控的策略4、人类在人工智能发展中的角色5、平衡自主性与控制力6、总结与…...

Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误

HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误&#xff0c;它们的含义、原因和解决方法都有显著区别。以下是详细对比&#xff1a; 1. HTTP 406 (Not Acceptable) 含义&#xff1a; 客户端请求的内容类型与服务器支持的内容类型不匹…...

docker详细操作--未完待续

docker介绍 docker官网: Docker&#xff1a;加速容器应用程序开发 harbor官网&#xff1a;Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台&#xff0c;用于将应用程序及其依赖项&#xff08;如库、运行时环…...

利用ngx_stream_return_module构建简易 TCP/UDP 响应网关

一、模块概述 ngx_stream_return_module 提供了一个极简的指令&#xff1a; return <value>;在收到客户端连接后&#xff0c;立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量&#xff08;如 $time_iso8601、$remote_addr 等&#xff09;&a…...

突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合

强化学习&#xff08;Reinforcement Learning, RL&#xff09;是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程&#xff0c;然后使用强化学习的Actor-Critic机制&#xff08;中文译作“知行互动”机制&#xff09;&#xff0c;逐步迭代求解…...

CentOS下的分布式内存计算Spark环境部署

一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架&#xff0c;相比 MapReduce 具有以下核心优势&#xff1a; 内存计算&#xff1a;数据可常驻内存&#xff0c;迭代计算性能提升 10-100 倍&#xff08;文档段落&#xff1a;3-79…...

跨链模式:多链互操作架构与性能扩展方案

跨链模式&#xff1a;多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈&#xff1a;模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展&#xff08;H2Cross架构&#xff09;&#xff1a; 适配层&#xf…...

微服务商城-商品微服务

数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...

(转)什么是DockerCompose?它有什么作用?

一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用&#xff0c;而无需手动一个个创建和运行容器。 Compose文件是一个文本文件&#xff0c;通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...