Elasticsarch:使用全文搜索在 ES|QL 中进行过滤 - 8.17
8.17 在 ES|QL 中引入了 match 和 qstr 函数,可用于执行全文过滤。本文介绍了它们的作用、使用方法、与现有文本过滤方法的区别、当前的限制以及未来的改进。
ES|QL 现在包含全文函数,可用于使用文本查询过滤数据。我们将回顾可用的文本过滤方法,并了解为什么这些函数提供了更好的替代方案。我们还将研究 ES|QL 中全文函数的未来改进。
使用 ES|QL 过滤文本
日志中的文本数据对于理解、监控和排除系统和应用程序故障至关重要。文本的非结构化性质允许灵活地捕获各种信息。
由于是非结构化的,我们需要隔离特定模式、关键字或短语的方法。无论是搜索错误消息、使用标签缩小结果范围,还是查找特定主机名,都是我们一直在做的事情,以优化我们的结果并最终获得我们正在寻找的信息。
ES|QL 提供了不同的方法来帮助你处理文本。Elasticsearch 8.17 添加了全文函数 match 和 qstr,以帮助解决更复杂的搜索用例。
文本过滤的局限性
ES|QL 已经提供了文本过滤功能,包括:
- 文本相等,使用相等运算符直接比较完整字符串。
- 字符串开始和结束,使用 STARTS_WITH 和 ENDS_WITH 函数。
- 使用 LIKE 和 RLIKE 运算符进行模式和正则表达式匹配。
文本过滤很有用 - 但它在面向文本的用例中可能会有所不足:
多值字段
将 ES|QL 函数与多值字段结合使用可能比较棘手 - 函数在应用于多值字段时会返回 null。
如果你需要将函数应用于多值字段,则首先需要使用 MV_CONCAT 将值转换为单个值,以便可以匹配单个值:
FROM logs
| EVAL all_tags = MV_CONCAT(tags)
| WHERE all_tags == "production"
分析文本
分析器对于全文搜索非常有用,因为它们允许转换文本。它们允许我们提取和修改索引文本,并修改查询,以便我们最大限度地找到我们正在寻找的内容。
使用文本过滤时不会分析文本。这意味着例如,你需要在搜索时匹配文本大小写,或者创建解决可能的大小写差异的正则表达式/模式。
在查找多语言文本(因此你不能使用 ASCII folding)、尝试匹配路径的部分(path hierarchy)或删除停用词(stopwords)时,这可能会变得更加成问题。
性能
模式匹配和正则表达式需要时间。Lucene 可以通过创建有限自动机来使用索引术语词典进行匹配,从而完成大量繁重的工作,但这仍然是一个计算密集型过程。
正如你在我们 8.17 版本博客中看到的那样,使用正则表达式进行文本过滤的速度可能比使用全文函数慢 50-1000 倍,具体取决于你的数据集。
进入全文函数
Elasticsearch 8.17 和 Serverless 引入了两个用于文本匹配的新函数:MATCH 和查询字符串(缩写为 QSTR)。
这些函数解决了文本过滤的一些限制:
- 它们可以直接用于多值字段。当多值字段中的任何值与查询匹配时,它们将返回结果。
- 它们使用文本字段的分析器。将使用目标字段的任何现有分析器分析查询,这将允许匹配而不考虑大小写。这还可以解锁 ASCII folding、删除停用词,甚至使用同义词。
- 它们性能卓越。它们可以直接使用 Lucene 索引结构来定位数据中的特定术语,而不是依赖模式匹配或正则表达式。
MATCH 函数
MATCH 允许匹配特定字段上的值:
FROM logs
| WHERE match(message, "connection lost")
Match 函数在底层使用 match query。这意味着当使用多个术语时,它将创建一个布尔查询,并使用 OR 作为组合它们的默认运算符。
Match 函数目前有一些限制:
- 它不提供指定参数的方法。它将使用匹配查询的默认值。
- 它只能在 WHERE 子句中使用。
- 它不能在 STATS 或 LIMIT 命令之后使用
8.17 版本存在以下限制:
- 只有 text 或 keyword 字段可以与 MATCH 一起使用。
- MATCH 可以与其他条件组合作为 AND 表达式的一部分,但不能作为 OR 表达式的一部分。可以使用 WHERE match(message, "connection lost") AND length(message) > 10,但不能使用 WHERE match(message, "connection lost") OR length(message) > 10。
我们正在积极努力解除这些限制,以便你可以充分利用 MATCH 的全部功能。你可以查看 Elastic Cloud Serverless 中的进度,它会不断更新我们的新工作。以下是针对上述限制的 serverless 当前状态:
- MATCH 几乎可以与任何字段类型一起使用,并自动将字符串值转换为任何类型。
- 当条件的所有元素都是全文函数时,MATCH 和全文函数允许使用 OR 条件
查看最新文档以了解无服务器上 MATCH 的状态。
匹配运算符
匹配运算符 (:) 相当于上面的匹配函数,但它提供了更简洁的语法:
FROM logs
| WHERE message:"connection lost"
使用 match 运算符更方便,但你可以使用对你更有意义的任何运算符。
match 运算符具有与 match 函数相同的限制。
查询字符串函数
查询字符串函数 (QSTR) 使用查询字符串语法对一个或多个字段执行复杂查询:
FROM logs
| WHERE qstr("message: 'connection lost' AND tags:'production'")
查询字符串语法允许指定强大的全文选项和操作,包括模糊搜索、邻近搜索(proximity searches)和布尔运算符(boolean operators)的使用。有关更多详细信息,请参阅文档。
查询字符串是一个非常强大的工具,但目前有一些限制,与 MATCH 函数非常相似:
- 它不提供指定参数(如 match type)或指定要搜索的 default fields 的方法。
- 它只能在 WHERE 子句中使用。
- 它不能在 STATS 或 LIMIT 命令之后使用
- 它不能在修改列的命令之后使用,例如 SHOW、ROW、DISSECT、DROP、ENRICH、EVAL、GROK、KEEP、MV_EXPAND 或 RENAME
与 MATCH 函数类似,我们对 OR 条件有一个限制。QSTR 可以作为 AND 表达式的一部分与其他条件组合,但不能作为 OR 表达式的一部分。可以使用 WHERE qstr("message: 'connection lost'") AND length(message) > 10,但不能使用 WHERE qstr("message: 'connection lost'") OR length(message) > 10。
当条件的所有元素都是全文函数时,Elastic Cloud Serverless 允许使用 OR 条件。请查看最新文档,了解 QSTR 在 Serverless 上的状态。
下一步是什么?
全文搜索将会发生什么?相当多的事情:
- 为 MATCH 和 QSTR 函数的行为添加调整选项
- 一个额外的 KQL 函数,可用于将你现有的 Kibana 查询移植到 ES|QL
- 消除全文函数的当前限制
我们还在努力添加评分,因此你可以开始使用 ES|QL 进行相关性匹配,而不仅仅是进行过滤。这非常令人兴奋,因为这将定义 Elasticsearch 中文本搜索的未来!
试一试
MATCH 和 QSTR 在 Elasticsearch 8.17 上可用,当然它们在 Serverless 中始终是最新的。
你在文本过滤方面寻找什么?让我们知道你的反馈!
祝你全文过滤愉快!
Elasticsearch 包含新功能,可帮助你为你的用例构建最佳搜索解决方案。深入了解我们的示例笔记本以了解更多信息,开始免费云试用,或立即在你的本地机器上试用 Elastic。
原文:https://www.elastic.co/search-labs/blog/filtering-in-esql-full-text-search-match-qstr
相关文章:
![](https://i-blog.csdnimg.cn/direct/b9c8a60cf8db4697957b284a69992e83.webp)
Elasticsarch:使用全文搜索在 ES|QL 中进行过滤 - 8.17
8.17 在 ES|QL 中引入了 match 和 qstr 函数,可用于执行全文过滤。本文介绍了它们的作用、使用方法、与现有文本过滤方法的区别、当前的限制以及未来的改进。 ES|QL 现在包含全文函数,可用于使用文本查询过滤数据。我们将回顾可用的文本过滤方法…...
![](https://i-blog.csdnimg.cn/direct/d7b5c83911394b06ba76da1ec8749ed6.png)
第432场周赛:跳过交替单元格的之字形遍历、机器人可以获得的最大金币数、图的最大边权的最小值、统计 K 次操作以内得到非递减子数组的数目
Q1、跳过交替单元格的之字形遍历 1、题目描述 给你一个 m x n 的二维数组 grid,数组由 正整数 组成。 你的任务是以 之字形 遍历 grid,同时跳过每个 交替 的单元格。 之字形遍历的定义如下: 从左上角的单元格 (0, 0) 开始。在当前行中向…...
![](https://i-blog.csdnimg.cn/direct/25cfb899dd1446e4be4f67ed6fcec53f.png)
RK3399开发板Linux实时性改造
本次测试基于NanoPC-T4开发板(国产化处理器RK3399),4.19.111内核Xenomai实时性改造测试。 Xenomai下载网站:https://xenomai.org/downloads/ NanoPC-T4网站:https://wiki.friendlyarm.com/wiki/index.php/NanoPC-T4/z…...
![](https://www.ngui.cc/images/no-images.jpg)
青少年编程与数学 02-006 前端开发框架VUE 22课题、状态管理
青少年编程与数学 02-006 前端开发框架VUE 22课题、状态管理 一、状态管理二、Vuex1. 安装Vuex2. 创建Vuex Store3. 在Vue应用中使用Store4. 在组件中使用状态5. 模块化Store 三、Vuex应用示例1. 创建项目2. 安装Vuex3. 设置Vuex Store4. 在主项目中使用Store5. 创建组件6. 更新…...
![](https://www.ngui.cc/images/no-images.jpg)
Linux 内核中的 netif_start_queue 函数:启动网络接口发送队列的关键
在 Linux 内核的网络子系统中,netif_start_queue 函数扮演着至关重要的角色。这个函数的主要功能是启动(或启用)网络接口的发送队列,标志着网络接口已经准备好开始发送数据包。本文将深入探讨 netif_start_queue 函数的用途、工作原理以及在实际网络驱动代码中的应用。 函…...
![](https://i-blog.csdnimg.cn/direct/c1bc13f4546a4725acb935f1b1768119.gif#pic_center)
数据结构之顺序结构二叉树(超详解)
文章目录 1 树1.1 树的概念与结构1.2 相关术语1.3 树的表示与运用场景1.3.1 运用场景 2. 二叉树2.1 概念与结构2.1.1 满二叉树2.1.2 完全二叉树 3. 顺序结构二叉树3.1 堆的引入3.1.1 概念与结构 3.2 功能实现3.2.1 堆的结构3.2.2 初始化、销毁 3.3 堆的插入数据3.3.1 向上调整算…...
![](https://i-blog.csdnimg.cn/img_convert/dd43d6ed37cf2a38e9c06c996f597fb4.png)
acwing_5722_十滴水
acwing_5722_十滴水 下面这篇大佬的题解属实是把指针用明白了,可以好好理解一下: 原题解连接:AcWing 5722. 一个简单模拟实现 - AcWing map/unordered_map的用法:见收藏夹 #include<iostream> #include<unordered_map> #incl…...
![](https://www.ngui.cc/images/no-images.jpg)
acwing-3194 最大的矩形
acwing-3194 最大的矩形 这个题程序设计课上有讲过, 平民算法,时间复杂度在 O ( n 2 ) O(n^2) O(n2) // // Created by HUAWEI on 2024/10/28. // #include<iostream>using namespace std;const int Max_size 1e4 20;int N; int h[Max_size];…...
![](https://i-blog.csdnimg.cn/direct/213c983dd7a64acfaba6ab91dc598a6f.png)
UnityDemo-TheBrave-制作笔记
这是我跟着b站up主MStudio的视频学习制作的,大体上没有去做一些更新的东西,这里只是一个总的总结。在文章的最后,我会放上可以游玩该游戏的链接和exe可执行文件,不过没有对游戏内容进行什么加工,只有基本的功能实现罢了…...
![](https://i-blog.csdnimg.cn/direct/dd1118e4d45b4ddfaf7a45b94466c025.png)
玩转 JMeter:Random Order Controller让测试“乱”出花样
嘿,各位性能测试的小伙伴们!今天咱要来唠唠 JMeter 里超级有趣又超实用的 Random Order Controller(随机顺序控制器),它就像是性能测试这场大戏里的“魔术棒”,轻轻一挥,就能让测试场景变得千变…...
![](https://i-blog.csdnimg.cn/direct/f4a58cb3093040dd9b7329e477ed6be3.png)
VTK知识学习(33)-交互问题2
1、前言 主要是针对前面有过实现不了交互的情况进行说明,经过一些尝试和分析调用API,总算实现RenderWindowControl函数回调正常串接,当然这个移动处理事件的效果目前也没有确认。 2、使用 vtkImageReslice reslice vtkImageReslice.New();p…...
![](https://www.ngui.cc/images/no-images.jpg)
Centos9-SSH免密登录配置-修改22端口-关闭密码登录-提高安全性
Centos9-SSH免密登录配置-修改22端口-关闭密码登录 生成秘钥对将公钥信息存进authorized_keys测试登录查询访问记录、比对指纹更换22访问端口关闭账号密码登录生成秘钥对 生成密钥对,指定 备注 和 文件目录命令执行后,默认两次回车,不设置秘钥使用密码ssh-keygen -t rsa -b …...
![](https://www.ngui.cc/images/no-images.jpg)
SqlServer: An expression services limit has been reached异常处理
在工作中遇到一个问题,因为项目很老,代码很不规范,出现一种场景: 查询所有客户(5w条以上),然后根据客户Id,再去其他表查询,代码中是直接将customerId拼接到sql中去查询,形成的sql如…...
![](https://www.ngui.cc/images/no-images.jpg)
CentOS下安装Docker
Docker 必须要在Linux环境下才能运行,windows下运行也是安装虚拟机后才能下载安装运行,菜鸟教程 下载安装 linux 依次执行下边步骤 更新 yum yum update 卸载旧的Docker yum remove docker docker-client docker-client-latest docker-common doc…...
![](https://i-blog.csdnimg.cn/direct/4df607816fe2408e97e0a4efe2b4cdec.png)
WPF控件Grid的布局和C1FlexGrid的多选应用
使用 Grid.Column和Grid.Row布局,将多个C1FlexGrid布局其中,使用各种事件来达到所需效果,点击复选框可以加载数据到列表,移除列表的数据,自动取消复选框等 移除复选框的要注意!!!&am…...
![](https://i-blog.csdnimg.cn/direct/3bacdce6b54747b4bf6f6ffb214abf55.png)
Jenkins-持续集成、交付、构建、部署、测试
Jenkins-持续集成、交付、构建、部署、测试 一: Jenkins 介绍1> Jenkins 概念2> Jenkins 目的3> Jenkins 特性4> Jenkins 作用 二:Jenkins 版本三:DevOps流程简述1> 持续集成(Continuous Integration,CI࿰…...
![](https://i-blog.csdnimg.cn/direct/2f836415d51346f68d9ad4a0171f01ea.png)
高级第一次作业
1、shell 脚本写出检测 /tmp/size.log 文件如果存在显示它的内容,不存在则创建一个文件将创建时间写入。 2、写一个 shel1 脚本,实现批量添加 20个用户,用户名为user01-20,密码为user 后面跟5个随机字符。 3、编写个shel 脚本将/usr/local 日录下大于10M的文件转移到…...
![](https://i-blog.csdnimg.cn/img_convert/f9a1935ffc86640a875918802f2a2c43.png)
Copula算法原理和R语言股市收益率相依性可视化分析
阅读全文:http://tecdat.cn/?p6193 copula是将多变量分布函数与其边缘分布函数耦合的函数,通常称为边缘。在本视频中,我们通过可视化的方式直观地介绍了Copula函数,并通过R软件应用于金融时间序列数据来理解它(点击文…...
![](https://i-blog.csdnimg.cn/img_convert/a10c8a00e2253736a1ab329baaf95229.png)
反弹SHELL不回显带外正反向连接防火墙出入站文件下载
什么是反弹shell 正向连接正向连接(Forward Connection):正向连接是一种常见的网络通信模式,其中客户端主动发起连接到服务器或目标系统。正向连接通常用于客户端-服务器通信,客户端主动请求服务或资源,例如…...
![](https://i-blog.csdnimg.cn/direct/b30aa9c696a24ab3871f0eee9705ba1f.jpeg)
后盾人JS--JS值类型使用
章节介绍与类型判断 看看构造函数 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</t…...
![](https://i-blog.csdnimg.cn/direct/5ef19f817e6a4835b0f88642a6dc7941.png)
1月11日
[WUSTCTF2020]CV Maker 可以看到有个注册页面,尝试注册一个用户登进去看看 进来后第一眼就看到文件上传,尝试上传,上传php后返回了 文件上传后端检测exif_imagetype()函数 他提示不是image,也就是需要我们构造一个文件头为图像类…...
![](https://www.ngui.cc/images/no-images.jpg)
【深度学习】Pytorch:加载自定义数据集
本教程将使用 flower_photos 数据集演示如何在 PyTorch 中加载和导入自定义数据集。该数据集包含不同花种的图像,每种花的图像存储在以花名命名的子文件夹中。我们将深入讲解每个函数和对象的使用方法,使读者能够推广应用到其他数据集任务中。 flower_ph…...
![](https://i-blog.csdnimg.cn/direct/153ede1dc6ba4ab282d0cb5d48e199b4.png)
最近在盘gitlab.0.先review了一下docker
# 正文 本猿所在产品的代码是保存到了一个本地gitlab实例上,实例是别的同事搭建的。最近又又又想了解一下,而且已经盘了一些了,所以写写记录一下。因为这个事儿没太多的进度压力,索性写到哪儿算哪儿,只要是新了解到的…...
![](https://i-blog.csdnimg.cn/direct/b35517725e474b499bb9564b339e6d81.png)
OA项目登录
导入依赖,下面的依赖是在这次OA登录中用到的 <!--web依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.sprin…...
![](https://www.ngui.cc/images/no-images.jpg)
verilogHDL仿真详解
前言 Verilog HDL中提供了丰富的系统任务和系统函数,用于对仿真环境、文件操作、时间控制等进行操作。(后续会进行补充) 正文 一、verilogHDL仿真详解 timescale 1ns/1ps //时间单位为1ns,精度为1ps, //编译…...
![](https://www.ngui.cc/images/no-images.jpg)
基于http协议的天气爬虫
该系统将基于目前比较流行的网络爬虫技术, 对网站上的天气数据进行查询分析, 最终使客户能够通过简单的操作, 快速, 准确的获取目标天气数据。主要包括两部分的功能, 第一部分是天气数据查询, 包括时间段数…...
![](https://i-blog.csdnimg.cn/direct/68516156c1124c369b72436f76871e53.png)
_STM32关于CPU超频的参考_HAL
MCU: STM32F407VET6 官方最高稳定频率:168MHz 工具:STM32CubeMX 本篇仅仅只是提供超频(默认指的是主频)的简单方法,并未涉及STM32超频极限等问题。原理很简单,通过设置锁相环的倍频系数达到不同的频率&am…...
![](https://csdnimg.cn/release/blog_editor_html/release2.3.7/ckeditor/plugins/CsdnLink/icons/icon-default.png?t=O83A)
C#,图论与图算法,任意一对节点之间最短距离的弗洛伊德·沃肖尔(Floyd Warshall)算法与源程序
一、弗洛伊德沃肖尔算法 Floyd-Warshall算法是图的最短路径算法。与Bellman-Ford算法或Dijkstra算法一样,它计算图中的最短路径。然而,Bellman Ford和Dijkstra都是单源最短路径算法。这意味着他们只计算来自单个源的最短路径。另一方面,Floy…...
![](https://i-blog.csdnimg.cn/direct/3de8db9ea31a4bdc86f90fb09a12046b.png)
AWS云计算概览(自用留存,整理中)
目录 一、云概念概览 (1)云计算简介 (2)云计算6大优势 (3)web服务 (4)AWS云采用框架(AWS CAF) 二、云经济学 & 账单 (1)定…...
![](https://www.ngui.cc/images/no-images.jpg)
1. npm 常用命令详解
npm 常用命令详解 npm(Node Package Manager)是 Node.js 的包管理工具,用于安装和管理 Node.js 应用中的依赖库。下面是 npm 的一些常用命令及其详细解释和示例代码。 镜像源 # 查询当前使用的镜像源 npm get registry# 设置为淘宝镜像源 …...
![](/images/no-images.jpg)
网站群怎么做/宁波seo网络推广报价
在Ubuntu中备份svn上传的代码,将备份的文件命名为svn_backup当前时间.dump文件(例svn_backup20100525.dump)1.编写脚本文件(backup.sh)sudo touch backup.sh创建脚本文件,并编辑文件sudo vim backup.sh上图为配置的文件内容,代码如下…...
![](/images/no-images.jpg)
做网站公司 深圳信科/如何提高百度关键词排名
1.ACSII 字符实质和整数存储方式相同//2018年9月16日01:35:54# include <stdio.h> int main(void) {char ch 0; // printf("%c\n", ch);printf("%d\n", ch); //ASCII码规定字符A以65的整数值表示,字符0以48储存。return 0; } 2.ASCII…...
![](https://images2015.cnblogs.com/blog/1163900/201706/1163900-20170608070832153-1321723374.png)
相亲网站拉人做基金/贴吧aso优化贴吧
动态规划3--Help Jimmy 一、心得 二、题目 三、分析 Jimmy跳到一块板上后,可以有两种选择,向左走,或向右走。走到左端和走到右端所需的时间,是很容易算的。如果我们能知道,以左端为起点到达地面的最短时间,…...
![](https://img-blog.csdnimg.cn/img_convert/df5f8b239648880b4ea48a915be83dbc.png)
天蝎网站建设/seo专员工作内容
点击“开发者技术前线”,选择“星标🔝”让一部分开发者看到未来来自:机器之心最近在 GitHub 上最火的项目是一个对视力友好的十六进制编辑器,它上线仅 5 天就收获了 2500 star,最近 24 小时涨了 1600 star 量。十六进制…...
![](https://img-blog.csdnimg.cn/img_convert/8a906faccf059a01a32bfcc17e46a3b8.png)
wordpress 在线答题/网站优化推广教程
系统的平均负载可以通过uptime命令查看系统的平均负载: (top命令可以也可以,不过显示信息更多)$ uptime 10:35:08 up 23 days, 19:29, 3 users, load average: 0.11, 0.07, 0.06执行uptime命令,可以看到 当前时间、系统运行时间以及正在登录…...
![](/images/no-images.jpg)
杭州企业网站开发/站长工具综合查询系统
有时候我们自己内心经常在斗争,经常有两种声音在争论,比如 是看书呢?还是看电影呢?其实这是一个很大的话题,感性与理性的较量,而今天所说的就是认识到产生这种现象的原因。我们在一定程度上被原始社会进化的…...