谷粒商城实战笔记-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的说明:
-
使用REST request URI发送搜索参数:
这种方式是通过GET请求将查询参数附加在URL上。这适用于简单的查询,并且可以很容易地在浏览器中测试。例如,上面的查询示例:GET bank/_search?q=*&sort=account_number:asc
GET
是HTTP方法,用于请求从服务器获取资源。bank
是索引的名称。_search
是一个特殊的端点,用于执行搜索查询。q=*
是查询参数,*
表示搜索所有文档。sort=account_number:asc
指定了排序方式,这里按照account_number
字段升序排序。
-
使用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"]
}
-
GET bank/_search
:这是HTTP请求的开始,其中GET
是请求方法,bank
是索引的名称,_search
是执行搜索查询的端点。 -
"query": {
:定义查询的开始。 -
"match_all":()
:这是一个查询子句,match_all
查询会匹配所有文档。括号()
在这里应该是空的,因为match_all
查询不需要任何参数。 -
'sort": [
:这个部分看起来像是一个语法错误,因为sort
关键字后面紧跟着一个单引号'
,这可能是一个复制粘贴错误。正确的应该是"sort": {
,用于定义排序规则。 -
"balance":
:这是排序规则的一个字段,表示按照balance
字段进行排序。 -
"orden": "desc"
:指定排序的顺序,"desc"
表示降序排序。 -
"from": 5,
:定义从结果的哪个位置开始返回,这里设置为5,意味着从第6个结果开始返回。 -
"size": 5,
:定义返回结果的数量,这里设置为5,意味着返回5个结果。 -
_source": ["balance","firstname"]
:定义返回的源字段,这里指定返回balance
和firstname
字段的值。
这个查询会从bank
索引中检索所有文档,按照balance
字段降序排序,跳过前5个结果,然后返回接下来的5个结果,并且只返回每个结果的balance
和firstname
字段。
三,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"这个确切短语的文档。
匹配查询有两种可能:
-
完全匹配: 文档的"address"字段完全包含"Mill road"这个短语,例如:“123 Mill road”。
-
部分匹配: 搜索关键词"Mill road"会被分词为"mill"和"road",如果"address"字段包含"Mill"和"road",就会被匹配到,如"198 Mill Lane"或"263 Aviation Road"。
查询结果显示,一共有32个文档被匹配,每个结果都有评分,最高评分是8.926605,返回结果默认按照评分降序排序。显然,评分最高的是与搜索关键词匹配度最高的文档。
四,113-全文检索-ElasticSearch-进阶-match_phrase短语匹配
match_phrase
和match
类似,都是在指定的字段中进行全文搜索,不同的是match_phrase
要匹配整个短语中所有的词,match
匹配单个词就算命中,match_phrase
查询还关注词的顺序和位置,它返回的是那些在指定字段中包含整个短语的文档。
以下是match_phrase
查询的一些关键点:
-
短语匹配:
match_phrase
会寻找包含整个短语的文档,而不是单独的词。 -
词序: 它匹配的是短语中词的顺序,即短语中的词必须按照指定的顺序出现。
-
位置敏感: 短语中的词之间可以有其他词,但它们必须在短语中指定的顺序内。
-
使用场景: 当你需要搜索包含特定短语的文档时,比如搜索包含完整地址或名称的文档,
match_phrase
是一个很好的选择。 -
性能: 由于
match_phrase
查询需要考虑词的顺序和位置,它可能比match
查询在性能上要慢一些。 -
分析器: 与
match
查询一样,match_phrase
也受到字段使用的分析器的影响。不同的分析器可能会影响搜索结果。 -
语法:
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"]}}
}
在这个示例中,查询会在address
、firstname
字段上搜索包含"Albemarle"的文档。如果这些字段中的任何一个包含这个短语,文档就可能被返回在搜索结果中。
如下,firstname
包含Albemarle
,address
中不包含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. 得到更多分数的最少关卡数目 题目链接:3096. 得到更多分数的最少关卡数目 代码如下: class Solution { public:int minimumLevels(vector<int>& possible) {int s0;//两个玩家能得到的分数和for(int x:possible){sx0?-1:1;}int t0;/…...
AGI思考探究的意义、价值与乐趣Ⅳ
探究in context或Prompt对于LLM来说其根本意义,in context & Prompt Learning带给我们更深一层的提示是什么? 文章里的探索希望能够将in context或Prompt置身于一个更全局的视角来看待:将其视为在真实世界中时空认知流形所映射为数据流形…...
《数据结构》(C语言版)第1章 绪论(上)
第1章 绪论 1.1 数据结构的研究内容1.2 基本概念和术语 1.1 数据结构的研究内容 N.沃思(Niklaus Wirth)教授提出: 程序算法数据结构 电子计算机的主要用途 早期:主要用于数值计算 后来:非数值计算,复杂的具有一定结构…...
【Pyhton】数据类型之详讲字符串(上)
本篇文章将详细讲解字符串: 1、定义 定义字符串时,字符串的内容被双引号,单引号,三单引号,三双引号中的其中一个被括住。 例如: 双引号: v1"haha" 单引号: v1hahah…...
算法小白的进阶之路(力扣6~8)
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 非常期待和您一起在这个小…...
【期货】收盘点评。昨天说的,p2409棕榈油在今天或者周一会走出行情
收盘点评 昨天说的,p2409棕榈油在今天或者周一会走出行情。事实就是如此。震荡了几天了,波幅不大的来回震荡,其实主力是不想震荡的,但是不震荡自己的货和行情走不出来。所以我昨天就说,应该就是这一两天会走出一波小行…...
LBS 开发微课堂|Polyline绘制优化:效果更丰富,性能更佳!
为了让广大的开发者 更深入地了解 百度地图开放平台的技术能力 轻松掌握满满的技术干货 更加简单地接入 开放平台的服务 我们特别推出了 “位置服务(LBS)开发微课堂” 系列技术案例 第一期的主题是 《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类相关的文件,对应数…...
Python试讲
Python试讲 导语Python简介Python及其特点如何使用Python Python与计算计算变量 导语 本次试讲内容如下:Python简介与使用,Python与基本运算 辅助教材为 《趣学Python编程》和《Python编程从入门到实践》 Python简介 Python是目前入门最简单最好学的…...
RESTful API
RESTful API是一种基于REST (Representational State Transfer) 架构风格的应用程序编程接口。它通过使用HTTP协议的不同方法(如GET、POST、PUT、DELETE等)来对资源进行操作和传输数据。 使用RESTful API构建web应用程序需要遵循以下几个步骤࿱…...
NEEP-EN2-2020-Text1
英二-2020-Text 1 摘自新科学家(New scientist)2018年11月的文章《Rats can make friends with robot rats and will rescue them when stuck》。 以下为个人解析,非官方公开标准资料,可能有误,仅供参考。(…...
摩托罗拉E6系统研究
这是很久以前研究摩托罗拉E6刷机包时总结的一些经验,不一定准确但留个纪念,希望会制作刷机包的高手交流学习。 ------------------------------------------------------------------------------------------------------------------------------- 摩…...
Spring中,ApplicationContext主要的实现类型包括?
Spring中,ApplicationContext主要的实现类型包括FileSystemXmlApplicationContext、ClassPathXmlApplicationContext、XmlWebApplicationContext、AnnotationConfigWebApplicationContext。 FileSystemXmlApplicationContext:这个实现从一个…...
JavaScript青少年简明教程:事件及处理
JavaScript青少年简明教程:事件及处理 在编程语言中,事件(Event)是一种使程序能够响应特定操作或条件发生的机制。它允许程序中的不同部分(比如对象、类或模块)在发生某些特定情况时互相通信或协作。事件驱…...
node_exporter
目录 指标详解常用指标 指标详解 指标描述node_arp_entriesARP(Address Resolution Protocol)表中的条目数量,用于将IP地址映射到MAC地址。node_boot_time_seconds系统启动时间的Unix时间戳,表示从1970年1月1日以来的秒数。node…...
近期在看
1. C Primer 2. 深入理解 FFmpeg 3. 鸿蒙 sdk 开发...
C++篇:C++入门基础(1)
C前言: C 的发展历史可以追溯到1979年,当时C语言以其效率和灵活性成为广泛使用的系统编程语言,但它也有一些限制,例如缺乏直接支持面向对象编程(OOP)的特性。 之后Bjarne Stroustrup(也就是C之父)是C的创始…...
【Linux】网络编程_3
文章目录 十、网络基础5. socket编程socket 常见APIsockaddr结构简单的UDP网络程序 未完待续 十、网络基础 5. socket编程 socket 常见API // 创建 socket 文件描述符 (TCP/UDP, 客户端 服务器) int socket(int domain, int type, int protocol);// 绑定端口号 (TCP/UDP, 服…...
Kafka设计与原理详解
RocketMQ 是一款开源的分布式消息系统,基于高可用分布式集群技术,提供低延时的、高可靠的消息发布与订阅服务。同时,广泛应用于多个领域,包括异步通信解耦、企业解决方案、金融支付、电信、电子商务、快递物流、广告营销、社交、即…...
IPV6公网暴露下的OPENWRT防火墙安全设置(只允许访问局域网中指定服务器指定端口其余拒绝)
首先是防火墙的常规配置和区域配置 标的有点乱但是选项含义都做了解释,看不懂可以直接按图抄作业。 其次是对需要访问的端口做访问放通 情况1 DDNS位于openwrt网关上,外网访问openwrt,通过端口转发访问内部服务器。此情况需要设置端口转发。 …...
单调栈② | Java | LeetCode 接雨水 最大的矩形
42. 接雨水 暴力法 for循环遍历每一个柱子,内层for循环找到左边和右边比它高的柱子 时间复杂度 n^2 优化:添加一个预处理 定义一个数组,存放该柱子右边比他高的柱子是哪一个 再用一个数组,存放该柱子左边比他高的柱子是哪一个 …...
2024年全国青少年信息素养大赛总决赛日赛程表
2024全国青少年信息素养大赛赛程表分赛场(浙江传媒学院桐乡校区、桐乡技师学院)日期地点时间赛项16日传媒学院8:00-9:00检录 9:00-10:30开赛图形化编程挑战赛(小学1-3年级)A组12:00-13:00检录 13:00-14:30开赛图形化编程挑战赛&am…...
PHP:连接钉钉接口-钉钉回调事件,本地测试数据
前置数据参考 数据说明:参见官方文档回调事件消息体加解密 - 钉钉开放平台 (dingtalk.com) URL后面带的参数: signature5a65ceeef9aab2d149439f82dc191dd6c5cbe2c0×tamp1445827045067&noncenEXhMP4r Post参数: { &quo…...
专业做网站开发费用/怎么卸载windows优化大师
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼一股令楼主都战栗的气息压塌了苍穹,本屌丝来了!本屌深邃的双眼中有无尽日月星辰,举手投足间竟有大道在共鸣。只见本屌动了,一只古朴的大手横跨无数楼层,直压楼主而来。2楼…...
网站开发客户需求/好看的web网页
需要设置代理的地方有三个 eclipse设定->一般->ネットワーク接続- 选 マニュアル 添加Http,Https,Socks代理 在下面添加例外 mavenusers文件夹下的.m2文件夹下的setting.xml 或者安装目录下conf文件夹中设置全局设置 <proxies> <prox…...
商城网站开发那家好/成都网站快速排名优化
1:复制表结构及数据到新表 select * into 目的数据库名.dbo.目的表名 from 原表名 select * into my0735home.dbo.infoMianTest from infoMian 2:备份表的一部分列(不写*而写出列的列表) select 列名1,列名2,列名3 into 目的数据库名.dbo.目的表名 from …...
怎么给网站在百度地图上做爬虫/国产系统2345
本文实例为大家分享了Java遍历文件夹下所有文件并重命名的具体代码,供大家参考,具体内容如下项目中需要将一批文件全部重新命名,文件实在太多就写了这个工具类这个工具类是将路径下的文件全部重新命名,且名字为同一个package com.…...
兰州电商网站建设/营销推广是干什么的
HTML元素那些事 在WEB开发中两个主要人物就是document类型和element类型。HTMLElement继承自Element并添加了一些属性。在实际的开发程序中总是通过HTML元素的属性去办一些事,有时候标准属性满足不了需求,就要添加一些自定义属性来来办事。如下ÿ…...
做网站怎么复制视频链接/全球网络营销公司排行榜
前言后台运行程序有一种需求,比如查看当前进度,想在终端看到某个值的变化情况:先提供一种很土的办法,把进度落地文件为 例如 process,采用创建写的方式。然后可以使用watch -n 1 cat process来查看进度。这里提供两种方…...