【Elasticsearch复合查询】

Elasticsearch复合查询

在Elasticsearch中,复合查询(Compound Queries)是用来封装其他复合查询或叶子查询的查询类型。它们的主要目的是组合这些查询的结果和分数、改变它们的行为或者从查询上下文切换到过滤上下文。

一个常见的复合查询是bool查询,它允许你通过布尔逻辑组合多个查询条件。bool查询包含以下几种子句:

  • must: 文档必须匹配所有must子句下的查询条件,并且这些匹配会影响到文档的相关性评分。
  • should: 文档可以匹配should子句下的一个或多个查询条件,这会增加文档的相关性评分。如果没有任何must子句存在,至少需要满足一个should子句。
  • must_not: 文档不能匹配任何must_not子句下的查询条件。这个子句不会影响评分,它的作用是排除不相关的文档。
  • filter: 文档必须匹配filter子句下的查询条件,但与must不同的是,filter子句不会影响文档的评分,只起到过滤的作用。

除了bool查询之外,还有其他的复合查询类型,例如:

  • constant_score 查询:将原始查询转换为不计算评分的过滤查询,并给所有匹配的文档赋予相同的评分。
  • dis_max 查询:用于指定一个查询中的多个子查询,并返回那些单个最佳匹配子查询得分最高的文档。
  • function_score 查询:允许你修改查询结果的评分,可以通过定义不同的函数来调整最终的评分。

代码示例

1. bool 查询

bool 查询是使用最广泛的复合查询之一。它允许你通过布尔逻辑组合多个查询条件。

  • must: 文档必须匹配这些条件,相当于 AND。
  • filter: 必须匹配,但不计算相关性分数。
  • should: 文档应该匹配这些条件中的至少一个,增加其相关性分数。
  • must_not: 文档不能匹配这些条件。

示例代码:

{"query": {"bool" : {"must" : {"term" : { "user" : "kimchy" }},"filter": {"term" : { "tag" : "tech" }},"must_not" : {"range" : {"age" : { "from" : 10, "to" : 20 }}},"should" : [{ "term" : { "comment" : "cool" } },{ "term" : { "comment" : "wonderful" } }]}}
}
2. dis_max 查询

dis_max 查询会选择单个最佳匹配的查询子句来计算最终分数,而不是像 bool 查询那样合并所有匹配子句的分数。

示例代码:

{"query": {"dis_max" : {"queries" : [{ "match" : { "title" : "Quick pets" }},{ "match" : { "body" : "Quick pets" }}],"tie_breaker" : 0.7}}
}
3. function_score 查询

function_score 允许你修改查询结果的评分,根据特定的函数调整每个文档的最终评分。

示例代码:

{"query": {"function_score": {"query": { "match_all": {} },"functions": [{"filter": { "match": { "test": "bar" }},"weight": 23},{"filter": { "match": { "test": "cat" }},"weight": 42}],"score_mode": "max","boost_mode": "multiply"}}
}

使用复合查询可以帮助你构建复杂的搜索逻辑,以精确地控制哪些文档应该被检索出来以及如何对它们进行排序。根据你的具体需求,你可以选择合适的复合查询类型来实现你的查询目标。

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

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

相关文章

20250112面试鸭特训营第20天

更多特训营笔记详见个人主页【面试鸭特训营】专栏 250112 1. TCP 和 UDP 有什么区别? 特性TCPUDP连接方式面向连接(需要建立连接)无连接(无需建立连接)可靠性可靠的,提供确认、重传机制不可靠&#xff0c…

【Rust】错误处理机制

目录 思维导图 引言 一、错误处理的重要性 1.1 软件中的错误普遍存在 1.2 编译时错误处理要求 二、错误的分类 2.1 可恢复错误(Recoverable Errors) 2.2 不可恢复错误(Unrecoverable Errors) 三、Rust 的错误处理机制 3…

v-bind操作class

v-bind操作class 参考文献: Vue的快速上手 Vue指令上 Vue指令下 Vue指令的综合案例 指令的修饰符 文章目录 v-bind操作classv-bind对于样式控制的增强操作class案例(tab导航高亮)操作style操作style案例 结语 博客主页: He guolin-CSDN博客 关注我一起学习&#…

算法妙妙屋-------2..回溯的奇妙律动

回溯算法是一种用于系统性地搜索和解决问题的算法,它以深度优先搜索(DFS)为基础,用来探索所有可能的解决方案。通过递归地尝试候选解并在必要时回退(即“回溯”),它能够高效地解决许多涉及组合、…

【微信小程序】5|我的页面 | 我的咖啡店-综合实训

我的页面 引言 本文将详细解析如何实现一个包含登录注册、多个功能模块跳转以及特定功能展示的“我的”页面。我们将使用 Vant Weapp 组件库来简化开发过程,并确保代码的高级性和条理性。 1. 项目结构 首先,确保你的项目结构如下所示: - …

ssh2详细使用步骤,以及常用方法介绍

开源地址:https://github.com/mscdex/ssh2 ssh2 是一个功能强大的 Node.js 库,用于通过 SSH 协议与远程服务器交互。它支持命令执行、文件上传下载、端口转发等操作,常用于自动化脚本和远程服务器管理。 下面是 ssh2 的详细使用步骤和常用方…

计算机网络速成

前言:最近在做一些动态的crypto,但是配置总搞不好,正好也有学web的想法,就先学学web再回去做密码,速成视频推荐b站建模老哥 目录 计算机网络概述网络的范围分级电路交换网络(电路交换)报文交换网…

基于springboot+vue的 嗨玩-旅游网站

开发语言:Java框架:springbootJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:…

八股学习 Redis

八股学习 Redis 使用场景常见问题问题1、2示例场景缓存穿透解决方案一解决方案二 问题3示例场景缓存击穿解决方案 问题4示例场景缓存雪崩解决方案 问题5示例场景双写一致性强一致方案允许延时一致方案 问题6RDB方式AOF方式两种方式对比 问题7示例场景惰性删除定期删除 使用场景…

行业案例:高德服务单元化方案和架构实践

目录 为什么要做单元化 高德单元化的特点 高德单元化实践 服务单元化架构 就近接入实现方案 路由表设计 路由计算 服务端数据驱动的单元化场景 总结 系列阅读 为什么要做单元化 单机房资源瓶颈 随着业务体量和服务用户群体的增长,单机房或同城双机房无法支持服…

GO语言实现KMP算法

前言 本文结合朱战立教授编著的《数据结构—使用c语言(第五版)》(以下简称为《数据结构(第五版)朱站立》)中4.4.2章节内容编写,KMP的相关概念可参考此书4.4.2章节内容。原文中代码是C语言&…

Windows核心编程—匿名管道双向通信

注:父进程要创建两个匿名管道,并且STARTUPINFO 里面的两个字段很重要 A进程 void CMFCApplication1Dlg::OnBnClickedButton1() {SECURITY_ATTRIBUTES sa {};sa.nLength sizeof(SECURITY_ATTRIBUTES);sa.bInheritHandle TRUE;CreatePipe(&m_hRead…

基于springboot+vue的洪涝灾害应急信息管理系统设计与实现

开发语言:Java框架:springbootJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:…

centos修改/etc/resolv.conf 重启network后又恢复到原来的状态

博主使用的是centos7 问题描述:centos修改/etc/resolv.conf 执行 service network restart 后,/etc/resolv.conf 又恢复到原来的状态 解决方法:/etc/resolv.conf 保存 DNS 是暂时的,当重新启动 network 时,/etc/resol…

MySQL:索引

目录 1.MySQL索引是干什么的 2.铺垫知识 3.单个page的理解 4.页目录 单页情况 多页情况 1.MySQL索引是干什么的 MySQL的索引是提高查询效率,主要提高海量数据的检索速度。 2.铺垫知识 操作系统与磁盘之间IO的基本单位是4kb。 数据库是一个应用层软件&#…

【微服务】面试题 5、分布式系统理论:CAP 与 BASE 详解

分布式系统理论:CAP 与 BASE 详解 一、CAP 定理 背景与定义:1998 年由加州大学科学家埃里克布鲁尔提出,分布式系统存在一致性(Consistency)、可用性(Availability)、分区容错性(Part…

大数据技术Kafka详解 ⑤ | Kafka中的CAP机制

目录 1、分布式系统当中的CAP理论 1.1、CAP理论 1.2、Partitiontolerance 1.3、Consistency 1.4、Availability 2、Kafka中的CAP机制 C软件异常排查从入门到精通系列教程(核心精品专栏,订阅量已达600多个,欢迎订阅,持续更新…

linux自动分区后devmappercentos-home删除后合并到其它分区上

删除其他分区,合并到对应分区上增加磁盘空间 删除开机默认挂载 /dev/mapper/centos-home vim /etc/fstab 把 /dev/mapper/centos-home 这一行删除掉命令行取消挂载 /dev/mapper/centos-home umount /dev/mapper/centos-home删除掉逻辑卷 home lvsdf -hlvremove /…

东芝3525AC彩色复印机复印默认成黑白模式方法

同样适用2010AC等机型 东芝3525AC彩色激光数码复合机基本参数 产品类型:激光数码复合机 颜色类型:彩色 速度类型:中速 复印速度:彩色:35cpm,黑白:35cpm 涵盖功能:复印/打印/扫描…

T-SQL编程

目录 1、T-SQL的元素 1.1 标识符 1. 常规标识符 2. 分隔标识符 1.2 变量 1. 全局变量 2. 局部变量 1.3 运算符 1. 算数运算符 2. 赋值运算符 3. 位运算符 4. 比较运算符 5. 逻辑运算符 6. 字符串连接运算符 7. 一元运算符 8. 运算符的优先级和结合性 1.4 批处…