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

谷粒商城实战笔记-110~114-全文检索-ElasticSearch-查询

文章目录

  • 一,110-全文检索-ElasticSearch-进阶-两种查询方式
  • 二,111-全文检索-ElasticSearch-进阶-QueryDSL基本使用&match_all
  • 三,112-全文检索-ElasticSearch-进阶-match全文检索
  • 四,113-全文检索-ElasticSearch-进阶-match_phrase短语匹配
  • 五,114-全文检索-ElasticSearch-进阶-multi_match多字段匹配

一,110-全文检索-ElasticSearch-进阶-两种查询方式

Elasticsearch两种基本的检索方式使用Elasticsearch REST API的说明:

  1. 使用REST request URI发送搜索参数
    这种方式是通过GET请求将查询参数附加在URL上。这适用于简单的查询,并且可以很容易地在浏览器中测试。例如,上面的查询示例:

    GET bank/_search?q=*&sort=account_number:asc
    
    • GET 是HTTP方法,用于请求从服务器获取资源。
    • bank 是索引的名称。
    • _search 是一个特殊的端点,用于执行搜索查询。
    • q=* 是查询参数,* 表示搜索所有文档。
    • sort=account_number:asc 指定了排序方式,这里按照account_number字段升序排序。
  2. 使用REST request body发送搜索参数
    这种方式是通过POST请求发送一个JSON格式的请求体。它提供了更复杂的查询能力,并且可以包含多个查询参数和选项。例如,上面的查询示例:

    POST bank/_search
    {"query": {"match_all": {}},"sort": [{"account_number": {"order": "desc"}}]
    }
    
    • POST 是HTTP方法,通常用于向服务器提交要被处理的数据。
    • bank/_search 同样指定了索引和搜索端点。
    • 请求体中的 "query": { "match_all": {} } 定义了一个查询,match_all 查询将匹配所有文档。
    • "sort" 数组定义了排序规则,这里指定了按照account_number字段降序排序。

两种方式的主要区别在于查询的复杂性和灵活性。使用URI的方式简单直观,适合快速测试和简单的查询。使用请求体的方式则更适合复杂的查询,可以包含更多的选项和参数。

二,111-全文检索-ElasticSearch-进阶-QueryDSL基本使用&match_all

GET bank/_search
{"query": {"match_all": {}},"sort": [{"balance": {"order": "desc"}}],"from": 5,"size": 5,"_source": ["balance", "firstname"]
}
  1. GET bank/_search:这是HTTP请求的开始,其中GET是请求方法,bank是索引的名称,_search是执行搜索查询的端点。

  2. "query": {:定义查询的开始。

  3. "match_all":():这是一个查询子句,match_all查询会匹配所有文档。括号()在这里应该是空的,因为match_all查询不需要任何参数。

  4. 'sort": [:这个部分看起来像是一个语法错误,因为sort关键字后面紧跟着一个单引号',这可能是一个复制粘贴错误。正确的应该是"sort": {,用于定义排序规则。

  5. "balance"::这是排序规则的一个字段,表示按照balance字段进行排序。

  6. "orden": "desc":指定排序的顺序,"desc"表示降序排序。

  7. "from": 5,:定义从结果的哪个位置开始返回,这里设置为5,意味着从第6个结果开始返回。

  8. "size": 5,:定义返回结果的数量,这里设置为5,意味着返回5个结果。

  9. _source": ["balance","firstname"]:定义返回的源字段,这里指定返回balancefirstname字段的值。

在这里插入图片描述

这个查询会从bank索引中检索所有文档,按照balance字段降序排序,跳过前5个结果,然后返回接下来的5个结果,并且只返回每个结果的balancefirstname字段。

三,112-全文检索-ElasticSearch-进阶-match全文检索

match query是一种模糊匹配,查询时会将关键词进行分词处理,然后基于倒排索引进行匹配,对于匹配到的结果进行打分,返回结果按照评分进行排序。

如下查询。


GET bank/_search
{"query": {"match": {"address": "mill"}}
}

这个查询同样是针对Elasticsearch的"bank"索引的一个搜索请求,使用match查询来执行全文搜索。

  • GET bank/_search: 这表示使用HTTP GET方法发起请求,目的是对"bank"索引进行搜索。

  • "query": 这部分定义了搜索的查询条件。

  • "match": 这是Elasticsearch中用于执行全文搜索的查询类型,它会在指定的字段上进行搜索。

  • "address": 这是要搜索的字段名称,即文档中的"address"字段。

  • "Mill road": 这是搜索的关键词,查询会寻找"address"字段中包含"Mill road"这个确切短语的文档。

匹配查询有两种可能:

  1. 完全匹配: 文档的"address"字段完全包含"Mill road"这个短语,例如:“123 Mill road”。

  2. 部分匹配: 搜索关键词"Mill road"会被分词为"mill"和"road",如果"address"字段包含"Mill"和"road",就会被匹配到,如"198 Mill Lane"或"263 Aviation Road"。

在这里插入图片描述
查询结果显示,一共有32个文档被匹配,每个结果都有评分,最高评分是8.926605,返回结果默认按照评分降序排序。显然,评分最高的是与搜索关键词匹配度最高的文档。

四,113-全文检索-ElasticSearch-进阶-match_phrase短语匹配

match_phrasematch类似,都是在指定的字段中进行全文搜索,不同的是match_phrase要匹配整个短语中所有的词,match匹配单个词就算命中,match_phrase查询还关注词的顺序和位置,它返回的是那些在指定字段中包含整个短语的文档。

以下是match_phrase查询的一些关键点:

  1. 短语匹配: match_phrase会寻找包含整个短语的文档,而不是单独的词。

  2. 词序: 它匹配的是短语中词的顺序,即短语中的词必须按照指定的顺序出现。

  3. 位置敏感: 短语中的词之间可以有其他词,但它们必须在短语中指定的顺序内。

  4. 使用场景: 当你需要搜索包含特定短语的文档时,比如搜索包含完整地址或名称的文档,match_phrase是一个很好的选择。

  5. 性能: 由于match_phrase查询需要考虑词的顺序和位置,它可能比match查询在性能上要慢一些。

  6. 分析器: 与match查询一样,match_phrase也受到字段使用的分析器的影响。不同的分析器可能会影响搜索结果。

  7. 语法: match_phrase查询的语法与match类似,但是它更专注于短语的完整性和顺序。

这里是一个使用match_phrase查询的示例:

GET bank/_search
{"query": {"match_phrase": {"address": "Mill Road"}}
}

在这个示例中,查询会寻找"address"字段中包含"Mill Road"这个确切短语的文档,并且词的顺序和大小写都需要匹配。如果"address"字段包含"Mill Road",但是顺序或大小写不同,或者两个词中间有其他词,那么这些文档将不会被匹配。

五,114-全文检索-ElasticSearch-进阶-multi_match多字段匹配

multi_match查询允许在多个字段上执行相同的搜索查询,只要一个字段匹配,这条记录就会被命中。

下面是一个使用multi_match查询的示例:

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

在这个示例中,查询会在addressfirstname字段上搜索包含"Albemarle"的文档。如果这些字段中的任何一个包含这个短语,文档就可能被返回在搜索结果中。

如下,firstname包含Albemarleaddress中不包含Albemarle,但文档也会被命中。

在这里插入图片描述

相关文章:

谷粒商城实战笔记-110~114-全文检索-ElasticSearch-查询

文章目录 一,110-全文检索-ElasticSearch-进阶-两种查询方式二,111-全文检索-ElasticSearch-进阶-QueryDSL基本使用&match_all三,112-全文检索-ElasticSearch-进阶-match全文检索四,113-全文检索-ElasticSearch-进阶-match_ph…...

【开源】嵌入式Linux(IMX6U)应用层综合项目(1)--云平台调试APP

目录 1.简介 1.1功能介绍 1.2技术栈介绍 1.3演示视频 1.4硬件介绍 2.软件设计 2.1连接阿里云 2.2云平台调试UI 2.3Ui_main.c界面切换处理文件 2.4.main函数 3.结尾(附网盘链接) 1.简介 此文章并不是教程,只能当作笔者的学习分享&…...

AI人工智能分析王楚钦球拍被踩事件的真相

在2024年巴黎奥运会乒乓球混双决赛的热烈氛围中,中国队王楚钦与孙颖莎以出色的表现夺得金牌,然而,赛后发生的一起意外事件——王楚钦的球拍被踩坏,引起了广泛关注和热议。为了探寻这一事件的真相,我们可以借助AI人工智…...

C++客户端Qt开发——多线程编程(一)

多线程编程(一) ①QThread 在Qt中,多线程的处理一般是通过QThread类来实现。 QThread代表一个在应用程序中可以独立控制的线程,也可以和进程中的其他线程共享数据。 QThread对象管理程序中的一个控制线程。 run() 线程的入口…...

安装pnpm

安装pnpm(Performant npm),即高性能的npm包管理工具,可以通过多种方式进行。以下是详细的安装步骤: 一、通过npm全局安装 打开命令行工具:在你的计算机上打开命令行工具,例如Windows的CMD、Pow…...

CSS平移实现双开门效果

CSS平移实现双开门效果 一共要三张图片,一张作为父级背景,两张为兄弟左右布局 父子结构布局 一张作为父级背景,两张为兄弟左右布局。之后添加鼠标悬停效果,两张子图分别从左右平移 [外链图片转存失败,源站可能有防盗链机制,建议…...

3096. 得到更多分数的最少关卡数目

3096. 得到更多分数的最少关卡数目 题目链接&#xff1a;3096. 得到更多分数的最少关卡数目 代码如下&#xff1a; class Solution { public:int minimumLevels(vector<int>& possible) {int s0;//两个玩家能得到的分数和for(int x:possible){sx0?-1:1;}int t0;/…...

AGI思考探究的意义、价值与乐趣Ⅳ

探究in context或Prompt对于LLM来说其根本意义&#xff0c;in context & Prompt Learning带给我们更深一层的提示是什么&#xff1f; 文章里的探索希望能够将in context或Prompt置身于一个更全局的视角来看待&#xff1a;将其视为在真实世界中时空认知流形所映射为数据流形…...

《数据结构》(C语言版)第1章 绪论(上)

第1章 绪论 1.1 数据结构的研究内容1.2 基本概念和术语 1.1 数据结构的研究内容 N.沃思&#xff08;Niklaus Wirth)教授提出&#xff1a; 程序算法数据结构 电子计算机的主要用途 早期&#xff1a;主要用于数值计算 后来&#xff1a;非数值计算&#xff0c;复杂的具有一定结构…...

【Pyhton】数据类型之详讲字符串(上)

本篇文章将详细讲解字符串&#xff1a; 1、定义 定义字符串时&#xff0c;字符串的内容被双引号&#xff0c;单引号&#xff0c;三单引号&#xff0c;三双引号中的其中一个被括住。 例如&#xff1a; 双引号&#xff1a; v1"haha" 单引号&#xff1a; v1hahah…...

算法小白的进阶之路(力扣6~8)

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 非常期待和您一起在这个小…...

【期货】收盘点评。昨天说的,p2409棕榈油在今天或者周一会走出行情

收盘点评 昨天说的&#xff0c;p2409棕榈油在今天或者周一会走出行情。事实就是如此。震荡了几天了&#xff0c;波幅不大的来回震荡&#xff0c;其实主力是不想震荡的&#xff0c;但是不震荡自己的货和行情走不出来。所以我昨天就说&#xff0c;应该就是这一两天会走出一波小行…...

LBS 开发微课堂|Polyline绘制优化:效果更丰富,性能更佳!

为了让广大的开发者 更深入地了解 百度地图开放平台的技术能力 轻松掌握满满的技术干货 更加简单地接入 开放平台的服务 我们特别推出了 “位置服务&#xff08;LBS&#xff09;开发微课堂” 系列技术案例 第一期的主题是 《Polyline 绘制优化升级》 你还想了解哪些…...

VS Code设置C++编译器路径

C_Cpp.default.compilerPath是C/C编译器路径; python.condaPath是conda路径....

laravel项目配置

创建laravel项目 composer create-project --prefer-dist laravel/laravel 项目名称生成项目key php artisan key:generate.清理配置缓存 php artisan config:clearlaravel生成代码 官网链接 php artisan make:model Flight --all生成Flight类相关的文件&#xff0c;对应数…...

Python试讲

Python试讲 导语Python简介Python及其特点如何使用Python Python与计算计算变量 导语 本次试讲内容如下&#xff1a;Python简介与使用&#xff0c;Python与基本运算 辅助教材为 《趣学Python编程》和《Python编程从入门到实践》 Python简介 Python是目前入门最简单最好学的…...

RESTful API

RESTful API是一种基于REST (Representational State Transfer) 架构风格的应用程序编程接口。它通过使用HTTP协议的不同方法&#xff08;如GET、POST、PUT、DELETE等&#xff09;来对资源进行操作和传输数据。 使用RESTful API构建web应用程序需要遵循以下几个步骤&#xff1…...

NEEP-EN2-2020-Text1

英二-2020-Text 1 摘自新科学家&#xff08;New scientist&#xff09;2018年11月的文章《Rats can make friends with robot rats and will rescue them when stuck》。 以下为个人解析&#xff0c;非官方公开标准资料&#xff0c;可能有误&#xff0c;仅供参考。&#xff08;…...

摩托罗拉E6系统研究

这是很久以前研究摩托罗拉E6刷机包时总结的一些经验&#xff0c;不一定准确但留个纪念&#xff0c;希望会制作刷机包的高手交流学习。 ------------------------------------------------------------------------------------------------------------------------------- 摩…...

Spring中,ApplicationContext主要的实现类型包括?

Spring中&#xff0c;‌ApplicationContext主要的实现类型包括FileSystemXmlApplicationContext、‌ClassPathXmlApplicationContext、‌XmlWebApplicationContext、‌AnnotationConfigWebApplicationContext。‌ FileSystemXmlApplicationContext&#xff1a;‌这个实现从一个…...

Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)

文章目录 1.什么是Redis&#xff1f;2.为什么要使用redis作为mysql的缓存&#xff1f;3.什么是缓存雪崩、缓存穿透、缓存击穿&#xff1f;3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...

django filter 统计数量 按属性去重

在Django中&#xff0c;如果你想要根据某个属性对查询集进行去重并统计数量&#xff0c;你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求&#xff1a; 方法1&#xff1a;使用annotate()和Count 假设你有一个模型Item&#xff0c;并且你想…...

python如何将word的doc另存为docx

将 DOCX 文件另存为 DOCX 格式&#xff08;Python 实现&#xff09; 在 Python 中&#xff0c;你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是&#xff0c;.doc 是旧的 Word 格式&#xff0c;而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...

HBuilderX安装(uni-app和小程序开发)

下载HBuilderX 访问官方网站&#xff1a;https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本&#xff1a; Windows版&#xff08;推荐下载标准版&#xff09; Windows系统安装步骤 运行安装程序&#xff1a; 双击下载的.exe安装文件 如果出现安全提示&…...

微服务商城-商品微服务

数据表 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 商…...

OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 在 GPU 上对图像执行 均值漂移滤波&#xff08;Mean Shift Filtering&#xff09;&#xff0c;用于图像分割或平滑处理。 该函数将输入图像中的…...

Springboot社区养老保险系统小程序

一、前言 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;社区养老保险系统小程序被用户普遍使用&#xff0c;为方…...

淘宝扭蛋机小程序系统开发:打造互动性强的购物平台

淘宝扭蛋机小程序系统的开发&#xff0c;旨在打造一个互动性强的购物平台&#xff0c;让用户在购物的同时&#xff0c;能够享受到更多的乐趣和惊喜。 淘宝扭蛋机小程序系统拥有丰富的互动功能。用户可以通过虚拟摇杆操作扭蛋机&#xff0c;实现旋转、抽拉等动作&#xff0c;增…...

C++实现分布式网络通信框架RPC(2)——rpc发布端

有了上篇文章的项目的基本知识的了解&#xff0c;现在我们就开始构建项目。 目录 一、构建工程目录 二、本地服务发布成RPC服务 2.1理解RPC发布 2.2实现 三、Mprpc框架的基础类设计 3.1框架的初始化类 MprpcApplication 代码实现 3.2读取配置文件类 MprpcConfig 代码实现…...

macOS 终端智能代理检测

&#x1f9e0; 终端智能代理检测&#xff1a;自动判断是否需要设置代理访问 GitHub 在开发中&#xff0c;使用 GitHub 是非常常见的需求。但有时候我们会发现某些命令失败、插件无法更新&#xff0c;例如&#xff1a; fatal: unable to access https://github.com/ohmyzsh/oh…...