ES Filter Query 区别
在 Elasticsearch(ES) 中,Filter 和 Query 是两种常用的数据检索方式,它们的主要区别在于 是否计算相关性分数(Score) 以及 是否使用缓存。以下是它们的详细区别和应用场景:
1. 核心区别
| 特性 | Filter(过滤器) | Query(查询) |
|---|---|---|
| 相关性分数 | 不计算分数,只判断文档是否匹配。 | 计算分数,用于衡量文档与查询的相关性。 |
| 性能 | 性能更高,适合精确匹配。 | 性能较低,适合全文检索。 |
| 缓存 | 结果会被缓存,重复查询时更快。 | 结果不会被缓存。 |
| 使用场景 | 精确匹配(如范围查询、Term 查询)。 | 全文检索(如 Match 查询)。 |
| 排序 | 不参与排序。 | 参与排序(基于分数)。 |
2. 详细说明
(1)Filter(过滤器)
-
特点:
-
只判断文档是否匹配,不计算相关性分数。
-
结果会被缓存,适合重复查询的场景。
-
性能更高,因为不需要计算分数。
-
-
使用场景:
-
精确匹配(如 Term 查询、Range 查询)。
-
布尔条件判断(如
must、should、must_not)。 -
过滤不需要排序的数据。
-
-
示例:
json
复制
{"query": {"bool": {"filter": [{ "term": { "status": "active" } },{ "range": { "age": { "gte": 18, "lte": 30 } } }]}} }
(2)Query(查询)
-
特点:
-
计算文档与查询的相关性分数(Score)。
-
结果不会被缓存。
-
适合全文检索和模糊匹配。
-
-
使用场景:
-
全文检索(如 Match 查询)。
-
需要排序的场景(基于分数)。
-
模糊匹配(如 Fuzzy 查询)。
-
-
示例:
json
复制
{"query": {"match": {"title": "elasticsearch"}} }
3. Filter 和 Query 的结合使用
在实际应用中,Filter 和 Query 通常会结合使用,以兼顾性能和相关性。例如:
-
使用 Filter 过滤掉不符合条件的文档。
-
使用 Query 对剩余文档计算相关性分数。
示例:
json
复制
{"query": {"bool": {"must": [{ "match": { "title": "elasticsearch" } } // Query],"filter": [{ "term": { "status": "active" } }, // Filter{ "range": { "age": { "gte": 18 } } } // Filter]}}
}
-
must:用于 Query,计算相关性分数。 -
filter:用于 Filter,不计算分数,但会缓存结果。
4. 性能对比
-
Filter:
-
性能更高,适合精确匹配。
-
结果缓存可以显著提升重复查询的性能。
-
-
Query:
-
性能较低,因为需要计算相关性分数。
-
适合全文检索和排序场景。
-
5. 总结
-
Filter:
-
适合精确匹配和过滤场景。
-
不计算分数,性能更高,结果会被缓存。
-
-
Query:
-
适合全文检索和排序场景。
-
计算分数,性能较低,结果不会被缓存。
-
-
结合使用:
-
在实际应用中,通常将 Filter 和 Query 结合使用,以兼顾性能和相关性。
-
通过合理使用 Filter 和 Query,可以显著提升 Elasticsearch 的查询性能和准确性。
相关文章:
ES Filter Query 区别
在 Elasticsearch(ES) 中,Filter 和 Query 是两种常用的数据检索方式,它们的主要区别在于 是否计算相关性分数(Score) 以及 是否使用缓存。以下是它们的详细区别和应用场景: 1. 核心区别 特性F…...
Java多线程与高并发专题——关于CopyOnWrite 容器特点
引入 在 CopyOnWriteArrayList 出现之前,我们已经有了 ArrayList 和 LinkedList 作为 List 的数组和链表的实现,而且也有了线程安全的 Vector 和Collections.synchronizedList() 可以使用。 首先我们来看看Vector是如何实现线程安全的 ,还是…...
春节面对大流量并发,系统该如何设计
基于6个层次进行系统设计以解决大流量瞬时并发问题:CDN层,Nginx层,服务层,缓存层,数据库层,全链路压测监控。以下为具体设计参考 1. CDN(内容分发网络) 作用:静态资源&…...
mac本地安装运行Redis-单机
记录一下我以前用的连接服务器的跨平台SSH客户端。 因为还要准备毕设...... 服务器又过期了,只能把redis安装下载到本地了。 目录 1.github下载Redis 2.安装homebrew 3.更新GCC 4.自行安装Redis 5.通过 Homebrew 安装 Redis 安装地址:https://git…...
77.ObservableCollection使用介绍1 C#例子 WPF例子
可观察集合ObservableCollection using System; using System.Collections.ObjectModel;class Program {static void Main(){// 创建一个可观察集合ObservableCollection<string> list new ObservableCollection<string>();// 注册集合变化事件list.CollectionCh…...
【ThreeJS Basics 09】Debug
文章目录 简介从 dat.GUI 到 lil-gui例子安装 lil-gui 并实例化不同类型的调整改变位置针对非属性的调整复选框颜色 功能/按钮调整几何形状文件夹调整 GUI宽度标题关闭文件夹隐藏按键切换 结论 简介 每一个创意项目的一个基本方面是能够轻松调整。开发人员和参与项目的其他参与…...
在 k8s中查看最大 CPU 和内存的极限
在 Kubernetes(k8s)中,你可以从不同层面查看最大 CPU 和内存的极限,下面为你详细介绍从节点和集群层面查看的方法。 查看节点的 CPU 和内存极限 节点的 CPU 和内存极限是指单个节点上可分配的最大资源量,可通过以下几…...
【笔记】STM32L4系列使用RT-Thread Studio电源管理组件(PM框架)实现低功耗
硬件平台:STM32L431RCT6 RT-Thread版本:4.1.0 目录 一.新建工程 二.配置工程 编辑 三.移植pm驱动 四.配置cubeMX 五.修改驱动文件,干掉报错 六.增加用户低功耗逻辑 1.设置唤醒方式 2.设置睡眠时以及唤醒后动作 编辑 3.增加测试命…...
类和对象:
1. 类的定义: 1. 类定义格式: 对于我们的类的话,我们是把类看成一个整体,我们的函数里面没有找到我们的成员变量,我们就在我们的类里面找。 我们看我们的第二点: 我们的类里面,我们通常会对…...
【十三】Golang 通道
💢欢迎来到张胤尘的开源技术站 💥开源如江河,汇聚众志成。代码似星辰,照亮行征程。开源精神长,传承永不忘。携手共前行,未来更辉煌💥 文章目录 通道通道声明初始化缓冲机制无缓冲通道代码示例 带…...
对接RAGflow的API接口报错
对接RAGflow的API接口,报错: {"status":"success","message":"API连接正常","response":{"code":109,"data":false,"message":"Authentication error: API key …...
软考中级_【软件设计师】知识点之【面向对象】
简介: 软件设计师考试中,面向对象模块为核心考点,涵盖类与对象、继承、封装、多态等基础概念,重点考查UML建模(类图/时序图/用例图)、设计模式(如工厂、单例模式)及SOLID设计原则。要…...
Excel中COUNTIF用法解析
COUNTIF 是 Excel 中一个非常实用的函数,用于统计满足某个条件的单元格数量。它的基本语法如下: 基本语法 COUNTIF(范围, 条件) 范围:需要统计的单元格区域,例如 A1:A10 或整列 A:A。 条件:用于判断哪些单元格需要被…...
分布式锁—7.Curator的分布式锁一
大纲 1.Curator的可重入锁的源码 2.Curator的非可重入锁的源码 3.Curator的可重入读写锁的源码 4.Curator的MultiLock源码 5.Curator的Semaphore源码 1.Curator的可重入锁的源码 (1)InterProcessMutex获取分布式锁 (2)InterProcessMutex的初始化 (3)InterProcessMutex.…...
《UE5_C++多人TPS完整教程》学习笔记35 ——《P36 武器类(Weapon Class)》
本文为B站系列教学视频 《UE5_C多人TPS完整教程》 —— 《P36 武器类(Weapon Class)》 的学习笔记,该系列教学视频为计算机工程师、程序员、游戏开发者、作家(Engineer, Programmer, Game Developer, Author) Stephen …...
【SpringMVC】SpringMVC的启动过程与原理分析:从源码到实战
SpringMVC的启动过程与原理分析:从源码到实战 SpringMVC是Spring框架中用于构建Web应用的核心模块,它基于MVC(Model-View-Controller)设计模式,提供了灵活且强大的Web开发能力。本文将深入分析SpringMVC的启动过程、核…...
出现“ping不通但可以远程连接”的情况可能由以下原因导致
出现“ping不通但可以远程连接”的情况可能由以下原因导致: 1.防火墙或安全软件限制 • 原因:防火墙或安全软件可能阻止了ICMP数据包(ping使用的协议),但允许了远程连接所需的协议(如TCP)。 …...
MySQL表空间碎片原理和解决方案
一、表空间与碎片的基本概念 表空间:MySQL中存储表数据和索引的物理文件(如InnoDB的.ibd文件)。分为系统表空间和独立表空间。碎片:数据在物理存储上不连续,分为行级碎片(单行跨多页)和页级碎片…...
[密码学实战]Java实现国密TLSv1.3单向认证
一、代码运行结果 1.1 运行环境 1.2 运行结果 1.3 项目架构 二、TLS 协议基础与国密背景 2.1 TLS 协议的核心作用 TLS(Transport Layer Security) 是保障网络通信安全的加密协议,位于 TCP/IP 协议栈的应用层和传输层之间,提供: • 数据机密性:通过对称加密算法(如 AE…...
最小栈 _ _
一:题目 二:思路 解释:一个栈名为st,其用来正常的出入栈,一个栈名为minst,其的栈顶元素一定是最小的元素 入栈:第一个元素,两个栈一起入,后面再入栈,只有入栈…...
HTTPS加密原理详解
目录 HTTPS是什么 加密是什么 HTTPS的工作流程 1.使用对称加密 2.引入非对称加密 3.引入证书机制 客户端验证证书真伪的过程 签名的加密流程 整体工作流程 总结 HTTPS是什么 HTTPS协议也是一个应用程协议,是在HTTP的基础上加入了一个加密层,由…...
黑金风格人像静物户外旅拍Lr调色教程,手机滤镜PS+Lightroom预设下载!
调色教程 针对人像、静物以及户外旅拍照片,运用 Lightroom 软件进行风格化调色工作。旨在通过软件中的多种工具,如基本参数调整、HSL(色相、饱和度、明亮度)调整、曲线工具等改变照片原本的色彩、明度、对比度等属性,将…...
安装pyqt6出现的问题
安装PyQt6报错: PermissionError: [WinError 32] 另一个程序正在使用此文件,进程无法访问。: C:\\Users\\xyj19\\AppData\\Local\\Temp\\tmp3xfmekh7 [end of output] note: This error originates from a subprocess, and is likely not a pr…...
java调用c++
VScode 配置java 并且使用JNA调用c 动态库 安装 Java 开发环境 安装 JDK官网直接下载就好,推荐镜像下载 通过网盘分享的文件:jdk-8u144-windows-x64.exe 链接: https://pan.baidu.com/s/1Ov9bJkPNnOgcliBL-PSTFQ?pwdpg43 提取码: pg43 直接安…...
gitlab+jenkins+harbor+k8s安装操作流程之Jenkins
准备环境 一台centos7系统 4C/8G/100G 如果是jenkins2.5以上版本需要centos8以上版本 JDK1.8编译安装(最新版本jdk需要18以上) MAVEN编译安装 GIT编译安装 JDK1.8步骤 tar -zxvf 解压 vim /etc/profile export JAVA_HOME/data/jdk1.8.0_111 export JRE_HOME$JAVA…...
【机械视觉】C#+VisionPro联合编程———【三、加载CogToolBlock工具详解,以及实例】
【机械视觉】C#VisionPro联合编程———【三、加载CogToolBlock工具详解,以及实例】 在VisionPro中,CogToolBlock 是一种容器工具,可以将多个视觉工具(如CogBlob、CogPMAlign等)组合成一个可复用的流程。通过C#与Visi…...
Android14 串口控制是能wifi adb实现简介
Android14 串口控制是能wifi adb实现简介 一、前言 文章目录 Android14 串口控制是能wifi adb实现简介一、前言二、Android14 串口控制是能wifi adb实现1、设置prop属性命令开启adb(1)相关prop属性设置(2)在设置界面或者 ifconfi…...
启动wsl里的Ubuntu24报错:当前计算机配置不支持 WSL2,HCS_E_HYPERV_NOT_INSTALLED
问题:启动wsl里的Ubuntu24报错 报错信息: 当前计算机配置不支持 WSL2。 请启用“虚拟机平台”可选组件,并确保在 BIOS 中启用虚拟化。 通过运行以下命令启用“虚拟机平台”: wsl.exe --install --no-distribution 有关信息,请访…...
常用AI工具推荐
AI对话相关 Deepseek https://chat.deepseek.com/ Kimi https://kimi.moonshot.cn/ 豆包 https://www.doubao.com/ 文心一言 https://yiyan.baidu.com/ 腾讯元宝 https://yuanbao.tencent.com 通义千问 https://tongyi.aliyun.com/qianwen/ 图片生成相关 即梦 https://jimen…...
用AI学编程3——Java学习1
一个Java文件, 整理出Java从入门到精通的所有知识点, 给出注释, 给出这样的Java文件 Java 学习整合文件 /*** Java 学习整合文件* 包含 Java 从入门到精通的主要知识点,包括基础语法、面向对象编程、异常处理、集合框架、多线程…...
