谷粒商城实战笔记-115-全文检索-ElasticSearch-进阶-bool复合查询

news/2024/12/31 0:17:28/

文章目录

    • 1,must
    • 2,must not
    • 3,should

1,must

{"query": {"bool": {"must": [{"match": {"gender": "M"}},{"match": {"address": "mill"}}]}}
}
  • bool: 这是一个布尔查询,用于组合多个查询条件。
  • must: 表示查询中必须满足的条件。如果文档不满足must中的任何条件,它将不会被包含在搜索结果中。

具体到这段代码,它定义了一个查询,其条件如下:

  • 必须匹配性别为男性(gender:"M"
  • 必须匹配邮件中包含mill
  • 以上两个条件都匹配的文档才能命中
  • 结果如下,满足3个文档
    在这里插入图片描述

2,must not

{"query": {"bool": {"must": [{"match": {"gender": "M"}},{"match": {"address": "mill"}}],"must_not": [{"match": {"age": "28"}}]}}
}
  • bool: 布尔查询组合多个查询条件。
  • must: 表示查询中必须满足的条件。如果文档不满足must中的任何条件,它将不会被包含在搜索结果中。
  • must_not: 表示查询中必须不满足的条件。如果文档满足must_not中的任何条件,它将不会被包含在搜索结果中。

具体到这段代码,定义了一个bool查询,其条件如下:

  • 必须匹配性别为男性(gender:"M"
  • 必须匹配邮件包含mill
  • 必须不匹配年龄为28岁的文档(age:"28"
  • 相对于前一个查询,多了must not条件规定的年龄不能是28岁,条件更多更严苛,命中的文档更少
    在这里插入图片描述

3,should

在布尔查询中,should子句用于指定一组可选条件。这些条件不是必须满足的,但如果文档满足这些条件,它们可以提高文档的相关性得分(即_score)。should子句通常与minimum_should_match参数一起使用,这个参数指定了至少需要多少个should条件被满足,文档才会被认为是匹配的。

这里是should子句的一些关键点:

  1. 可选性should中的条件是可选的,不强制要求文档必须满足。
  2. 提升得分:如果文档满足should中的条件,它的得分可能会提高,这取决于查询的构建方式和Elasticsearch的算法。
  3. minimum_should_match:这个参数定义了至少需要多少个should条件被满足。例如,如果你有3个should条件,你可以设置minimum_should_match为2,这意味着文档至少需要满足2个条件才能被认为是匹配的。
  4. mustmust_not结合使用should可以与must(必须满足的条件)和must_not(必须不满足的条件)一起使用,以构建复杂的查询。
GET bank/_search
{"query": {"bool": {"must": [{"match": {"gender": "M"}},{"match": {"address": "mill"}}],"must_not": [{"match": {"age": "18"}}],"should": [{"match": {"lastname": "Wallace"}}],"minimum_should_match": 0}}
}
  • bool:布尔查询,它允许组合多个查询条件。

    • must:包含必须满足的查询条件。文档必须满足must中的所有条件才会被包含在搜索结果中。在这个例子中,must有两个条件:

      • 性别(gender)必须是"M"。
      • 地址(address)必须包含"mill"。
    • must_not:包含必须不满足的查询条件。文档如果满足must_not中的任何条件,将不会被包含在搜索结果中。在这个例子中,must_not有一个条件:

      • 年龄(age)不能是"18"。
    • should:包含可选的查询条件。如果文档满足should中的条件,它可以提高文档的相关性得分,但不是必需的。在这个例子中,should有一个条件:

      • 姓氏(lastname)必须是"Wallace"。
    • minimum_should_match:指定至少需要多少个should条件被满足。在这个例子中,minimum_should_match设置为0,这意味着即使没有should条件被满足,文档也可以出现在搜索结果中。这个设置通常用于不强制要求should条件,但希望它们能够影响文档得分的情况。

总结来说,这个查询将返回bank索引中满足以下条件的文档:

  • 性别为男性(“M”)。
  • 地址包含"mill"。
  • 年龄不是18岁。
  • (可选)姓氏为Wallace的文档可能会获得更高的相关性得分,但这不是必需的。

需要注意的,shouldminimum_should_match配合使用,如果minimum_should_match等于1,必须满足should中至少1个条件,相当于must,当比must更灵活,因为should中如果有多个条件的话,只需要满足任意一个即可。

如果,把上面的查询中的minimum_should_match值改为1,则查询出来的结果更少。


http://www.ppmy.cn/news/1504817.html

相关文章

后端学习笔记(4)--MyBatis

1.MyBatis ​ *MyBatis是一款优秀的持久层框架,用于简化JDBC开发 *持久层 ​ *负责将数据保存到数据库的那一层代码 ​ *JavaEE三层架构:表现层、业务层、持久层 *框架 ​ *框架是一个半成品软件,是一套可重用的、通用的、软件基础代码…

搭建pxe网络安装环境实现服务器自动部署

1.首先配置自动化脚本工具 根据自己的主机设置自己的IP 这张图选择红框下面的选则剩余空间 红帽7的初始网卡为ens33,所以部署后新机器的网卡为ens33 根据自己所要部署的版本编写合适的脚本 使用vim.ks.cfg进入脚本编写 2.配置DHCP 使用vim编写/etc/dhcp/dhcpd.conf …

羌活基因组--文献精读-36

The chromosome-scale assembly of the Notopterygium incisum genome provides insight into the structural diversity of coumarins 羌活(Notopterygium incisum)基因组的染色体级别组装为香豆素的结构多样性提供了新的见解 摘要 香豆素是由苯丙素途…

常见的cms漏洞

目录 WordPress DedeCMS ASPCMS PHPMyadmin pageadmin WordPress WordPress是一个以PHP和MySQL为平台的自由开源的博客软件和内容管理系统。WordPress具有插件架构和模板系统。截至2018年4月,排名前1000万的网站中超过30.6%使用WordPress。WordPress是最受欢迎…

对象存储及其相关概念介绍

对象存储是一种用来描述解决和处理离散单元(这些离散单元被称作为对象)的方法的通用术语。以下是关于对象存储的详细解析: 一、基本概念 定义:对象存储,也叫做基于对象的存储,是一种将数据以对象的形式进…

软设之网络诊断命令

ping 用于检查网络是否连通 检查错误时,使用由近及远的原则,首先使用ping 127.0.0.1检查本机TCP/IP协议栈,能ping通,说明本机协议栈无问题 tracert:用于确定ip数据包访问目标所采取的路径,若网络不通,能定…

高可用性之盾:SQL Server数据库镜像的终极指南

标题:高可用性之盾:SQL Server数据库镜像的终极指南 引言 在企业级应用中,数据的安全性和可用性至关重要。SQL Server提供了多种高可用性解决方案,如故障转移群集实例(FCI)、可用性组(AG&…

基于MSER和HOG特征提取的SVM交通标志检测和识别算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 MSER 4.2 HOG特征提取 4.3 SVM 5.算法完整程序工程 1.算法运行效果图预览 (完整程序运行后无水印) 2.算法运行软件版本 matlab2017b 3.部分核心程序 (完整版代码包含中…