Elasticsearch查询之Match

Elasticsearch使用篇 - 全文查询 本文介绍Elasticsearch的全文查询 阅读详情

学习几天的elasticsearch总结下match匹配以方便温习。

首先我创建了一个index:mytest,type:usertest,并插入了5条数据。

ps:用的sense浏览器插件(如何安装可以百度)

pretty:美化查询结果。

_search:搜索关键字
query: 及表示查询
match: 匹配

一、简单的全查找:

式例:

POST /mytest/usertest/_search?pretty
{
     "query":{
            "match_all": {}
        }

}

mytest:index名称(对应关系数据库名称)
usertest:_type名称(对应关系数据库表名)

查询结果图:

通过hits 内total:5可以看出5条记录都查询出来了 
另外一种简单的写法示例:
POST /mytest/user/_search
推荐用第一种json体的方法,扩展性和灵活性更加多样化。但是简单的查询第一种就可以完成,视情况而定吧。
这个美化查询结果,看了半天觉得没啥变化,注:_source参数不会被美化。

二、查询单条数据
1:POST /mytest/usertest/_search?q=name:xiaofang

2:json体:
POST /mytest/usertest/_search?pretty
{
   "query":{
"match":{
      "name":"xiaofang"
   }
        }

}


简单说明:username:为字段名称和关系数据库字段一个意思。
      按照等分高低排列
笔者在使用java api进行操作时没有用QueryBuilders.matchPhraseQuery方法时返回结果包含“xiao”单词的文档(测试时使用的中文检索)
三、简单的条件查询:

查询usertest中年龄在20周岁以下的人员
   1: POST /mytest/usertest/_search
{   
    "query": {
        "match_all": {}
    },
            "filter":{
                "range": {
                    "userage": {
                      "from": 18,
                      "to": 20
                    }
                }
            }
        
}


查询年龄小于20周岁以下的人员
    2: POST /mytest/usertest/_search
{
    "query": {
        "match_all": {}
    },
            "filter":{
                "range": {
                   "userage": {
                      "lt" : "20"
                    }
                }
            }
      

}

 

我们可以通过查询结果看出两者之间的差别
这两个示例用到了“filter”,“range”这两个关键词。
filter:过滤器。用于过滤我们的查询结果,让查询结果更加精确化。
range:区间。(以上是range的简单的两种写法)
"lt" 转移字符 “小于”的意思。
"gt" :“大于”的意思。


四、match_phrase关键字查询:
match_phrase:短语搜索。
对比示例:
未使用match_phrase查询的代码及结果:


POST /mytest/usertest/_search
{
    "query": {
        "match": {
            "about": "listen music"
        }
    }
}




使用match_phrase查询的代码及结果:
POST /mytest/usertest/_search
{
    "query": {
        "match_phrase": {
            "about": "listen music"
        }
    }

}

match_phrase查询就不多说啦,一看就明白。


五、match_phrase_prefix查询
match_phrase_prefix:匹配短语前缀查询。
上两个示例就一目了然啦:
POST /mytest/usertest/_search
{   "query": { 
        "match_phrase": {
              "about": "love lis"
            }
        
    }    
}




POST /mytest/usertest/_search
{   "query": { 
        "match_phrase_prefix": {
              "about": "love lis"
            }
        
    }    
}




关于match匹配搜索就写到这儿吧。
elasticsearch的match_phrase匹配及其可能导致的查询问题 elasticsearch的match_phrase查询是全文查询,主要用于需要的 query 词的顺序与全文匹配中的顺序一致,这是基于 lucene 索引中存储的 term 在 doc 中出现的 position 信息来判断的。match_phrase 首先会把 query 内容分词,分词器可以自定义,同时文档还要满足以下两个条件才会被搜索到,一是分词后所有词项都要出现在指定字段中,二是字段中的词项顺序要一致。 阅读详情

相关推荐

24.ES中什么是match查询?match查询可以做什么?如何使用match查询?嘻哈的简写笔记——Elastic Search

1.什么是match查询?match查询可以做什么? 我们知道了term查询是不可以进行分词查询的,那么如何进行分词查询呢?就可以使用match查询; match查询属于高层查询,他会根据你查询的不同字段类型,采用不同的查询方式;(比较智能化) 例如: ·查询的是日期或者是数值的话,他会将你基于的字符串查询内容转换为日期或者数值对待;(智能把字符串转化为数值) ·如果查询的内容是一个不能别分词的内容(keyword),match查询不会对你指定的关键词进行分词; (不该分词的内容不给你分) ·如果查询的内容

嘻哈怪才的博客 3278

ElasticSearch-match查询

引言: match查询属于高层查询,他会根据你查询的字段类型不一样,采用不同的查询方式。 查询的是日期或者是数值的话,他会将你基于的字符串查询内容转换为日期或者数值对待。 如果查询的内容是一个不能被分词的内容(keyword),match查询不会对你指定的查询关键字进行分词。 如果查询的内容时一个可以被分词的内容(text),match会将你指定的查询内容根据一定的方式去分词,去分词库中匹配指定的内容。 match查询,实际底层就是多个term查询,将多个term查询的结果给你封装到了一起。 .

qwq1518346864的博客 2546

elasticsearch基本查询三(英文分词)match查询

本文全面解析Elasticsearch查询DSL的核心概念与实战应用,重点对比全文查询(match、match_phrase等)和精确查询(term、terms等)的关键差异。文章通过丰富示例演示了基础查询语法、跨字段搜索、短语匹配等技巧,深入剖析了相关性评分机制和查询性能优化策略,并提供布尔查询组合、范围过滤等复杂业务场景的解决方案。最后总结了5条最佳实践:优先使用filter上下文、合理选择查询类型、善用布尔查询、优化查询性能、掌握排查工具,帮助开发者构建高效的Elasticsearch搜索方案。

ywl470812087的博客 12万+

ElasticSearch中查询语句用法(match、match_phrase、multi_match、query_string)

ElasticSearch中查询语句用法(match、match_phrase、multi_match、query_string)

IT之一小佬的博客 1万+

【Elasticsearch】es 查询 multi_match 与 match_phrase

1.概述 2.区别 multi_match 与 match_phrase 的区别 multi_match 是对 boolQuery().should(matchQuery(field, keyword)) 的一种简化,简单说就是一个关键词,匹配多个字段,匹配方式为 matchQuery,正常的全文匹配。 match_phrase 简单说就是要匹配一个短语,例如你输入的文本为:中国人,如果被分词为:中国/人,那么查找时候会在指定的字段先查找到 “中国” 这个 term,然后在 “中国” 这个 term 后.

九师兄 3447

Elasticsearch 中,term 查询和 match 查询的区别

如果您觉得有用的话,记得给,写作不易啊^ _ ^。而且听说,实在白嫖的话,那欢迎常来啊!!!如果需要精确匹配某个值,应该使用term查询。如果需要进行全文搜索或模糊匹配,应该使用match查询。

杨杨杨~~的博客 1589

Elasticsearch:了解和使用 match 查询

Match query 是针对多个用例的最常见和最强大的查询。它是一个全文搜索查询,返回符合指定条件的文档。match query 可以即兴使用来查询多个选项。

Elastic 中国社区官方博客 4353

Oracle VM VirtualBox虚拟机网络配置与静态IP设置实战

本文详细讲解了Oracle VM VirtualBox虚拟机的网络配置,特别是如何设置静态IP以实现稳定访问。文章对比了NAT、桥接、仅主机等网络模式,并提供了从VirtualBox管理界面到Linux系统内部的完整配置步骤,帮助用户解决IP变动问题,构建可靠的本地开发测试环境。

weixin_28365523的博客 510

ElasticSearch系列 - SpringBoot整合ES:短语匹配查询 match_phrase

例如,如果查询是“quick brown fox”,match查询将匹配包含“quick”、“brown”或“fox”的文档,而不管它们的顺序如何。③ 如果想要 title 字段包含 ”文雅精品酒店“ 的文档也被查询到,则可以设置 match_phrase 查询的 slop 参数,它用来调节匹配词之间的距离阈值,默认为0,表示必须按照给定的顺序精确匹配。它会将查询字符串分解成单词,然后按照顺序匹配文档中的单词,只有当文档中的单词顺序与查询字符串中的单词顺序完全一致时才会匹配成功。

你今天真好看呀 5460

「大模型学习」(14)Long Context之线性插值、NTK-aware、Yarn、LongRoPE

大语言模型长上下文扩展中的位置插值技术 摘要:为解决大语言模型(LLMs)在推理阶段扩展上下文窗口时的位置编码限制,研究人员开发了一系列位置插值技术。这些方法主要针对旋转位置编码(RoPE)机制,通过不同策略调整位置索引以适应超出训练长度的上下文。典型方法包括:基础位置插值(PI)均匀缩放位置索引;NTK-aware插值对不同频率维度差异化处理;NTK-by-parts插值根据波长分段调整;Yarn插值结合温度调节;以及LongRoPE采用非均匀插值策略。这些技术在不修改模型结构的前提下,通过调整位置编码的

qq_43044037的博客 1643

嵌入式设备的switch 以及PHY 芯片调试和选型 (1)

越来越的设备需要多网口的需求,于是需求搭配一个交换机实现网口的扩展。但是很多软件或是硬件工程师在实际选型和应用中经常会遇到一些问题。这里总结一下,避免大家采坑。 几个概念: MAC(介质访问控制),可以理解成数据链路层即可 PHY(物理性),简单理解层转成物理层的连接组件即可 控制接口(MDC/DMIO,I2C,...

睿峰的博客 1万+

ElasticSearch系列 - SpringBoot整合ES:全文搜索 match查询

具体来说,match查询会将查询字符串分词后,对每个词条进行搜索,并返回包含任意一个词条的文档。在使用match查询时,如果查询字符串中包含中文文本,Elasticsearch会使用相同的分词器对查询字符串进行分词处理,以便在倒排索引中查找匹配项。match查询是一种基于全文搜索的查询方式,它会将查询字符串分词后,与文档中的字段进行匹配。match查询会对查询字符串进行分词,operator 参数可以指定多个查询词之间的逻辑运算符, or 运算符将所有词条组合起来,返回匹配任意一个词条的文档。

你今天真好看呀 2019

CTF逆向实战:如何快速识别RC4、TEA和Base64的魔改变种?

本文针对CTF逆向比赛中常见的加密算法魔改问题,详细讲解了如何快速识别和破解RC4、TEA和Base64的变种。通过分析算法核心特征、常见魔改手法,并结合动态调试与脚本编写等实战技巧,帮助逆向分析人员有效应对算法混淆,提升解题效率。

agile9scrum的博客 783

es java match_elasticsearch笔记(4) java操作es的查询_02----- match查询

一. match查询比较智能.体现在能够根据查询的字段类型不用, 采用不同的查询方式查询的是日期或者是数组, 会把你基于字符串查询内容转为日期或数值对待查询内容是keyword类型, 则match查询不会对你指定的查询进行分词.查询的内容是text类型, 则mathc查询会根据ik分词方式分词, 去分词库中匹配指定内容.mathc查询的底层是多个term查询1.1 match_all查询在java...

weixin_39624716的博客 641

AI驱动的iOS逆向工程自动化:14阶段工作流与Ghidra集成实践

逆向工程是软件安全分析的核心技术,通过反汇编、调试等手段解析程序内部逻辑与数据流。其原理在于将编译后的二进制代码还原为可理解的逻辑结构,从而发现潜在漏洞或理解软件行为。在移动安全领域,iOS逆向工程具有重要技术价值,能够用于安全审计、漏洞挖掘与恶意软件分析。传统iOS逆向依赖ipsw、class-dump、Frida等工具链组合,存在学习曲线陡峭与流程碎片化问题。本文介绍的ios-reverse-skills项目创新性地将14阶段逆向工程方法论封装为AI可调用的标准化脚本集,通过Ghidra脚本实现Swif

weixin_27268733的博客 432

内存优化--LOGBACK导致内存告警

一.故事背景 由于开辟新市场需要,开发了新的项部署在海外平台,其中最消耗内存的功能是消费kafka消息(最开始预计一天有1千万的量),部署完之后运行一段时间发现出现内存告警问题。 二.分析问题 出现内存告警,(新项目是低配置机器 2C4G * 2台)第一个念头是去查看堆空间设置的情况,看到jvm启动命令中堆空间都是直接指定大小,说明问题不是出在堆空间 -Xmx3g -Xms3g 先不管这些,去查看总的内存使用情况,发现总的内存空间使用将近有92% = 3.68G,那么这多出来使用的0.6

qq_33199919的博客 6052

Elasticsearch 查询之term,match,match_phrase

1. term查询是基于词项的查询,而且当设置为term查询时,es不会对这个词做任何处理,但是在文本进行分词时,通常都会将大写转为小写,这个时候就会出现查不出来的情况,比如: POST /test/_doc { "name":"Pantheon" } 这样创建出来的doc可以看到明显做了lowercase,因为用的standard分词器 GET /test/_analyze { "field": "name", "text": "Pantheon" } 所以当使用下面的语句去查

zhanggf的博客 2779

ZYNQ新手必看:你的PS端DDR和QSPI配置真的对了吗?从原理到实操的避雷指南

本文深入解析ZYNQ PS端外设配置的关键要点,特别是DDR匹配和QSPI时钟优化的实战技巧。通过详细案例和配置清单,帮助开发者避免常见错误,确保系统稳定性和启动可靠性。适合ZYNQ新手和需要优化最小系统的开发者参考。

weixin_28675839的博客 445

es java match_ElasticSearch查询 第四篇:匹配查询(Match)

《ElasticSearch查询》目录导航:匹配(Match)查询属于全文(Fulltext)查询,不同于词条查询,ElasticSearch引擎在处理全文搜索时,首先分析(analyze)查询字符串,然后根据分词构建查询,最终返回查询结果。匹配查询共有三种类型,分别是布尔(boolean)、短语(phrase)和短语前缀(phrase_prefix),默认的匹配查询是布尔类型,这意味着,Elas...

weixin_36304352的博客 1281

基于STM32的IMU惯性/姿态解算与多参数上位机可视化实现_资料编号38

本项目实现基于STM32F103C8T6标准库,对姿态/惯性(IMU)传感器姿态解算,通过USB-TTL转串口模块将姿态角/欧拉角、加速度、角速度、磁场、气压、海拔高度、磁力计温度、气压计温度等数据显示在PC端上位机,系统采用可充电锂电池供电。

嵌入式阿齐Archie 1万+

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

ElasticSearch系列 - SpringBoot整合ES:多字段查询 multi_match

有时用户需要在多个字段中查询关键词,除了使用布尔查询封装多个match查询之外,可替代的方案是使用multi_match。可以在multi_match的query子句中组织数据匹配规则,并在fields子句中指定需要搜索的字段列表。"query" : "搜索文本" , "fields" : [ "字段1" , "字段2" , "字段3" ] } } }在上面的查询中,我们指定了要搜索的文本和要搜索的字段列表。ElasticSearch将搜索所有指定的字段,并将它们合并为一个结果集。

你今天真好看呀 4349

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

es查询什么时候使用term,什么时候使用match 以及 match_phrase

match查询是带有分词的,所以一般模糊查询的时候使用match, term就是精准查询了,必须全部匹配,但是这里有个小细节,直接使用term精准匹配可能查不出来数据,我们看看为啥, 我们先查询全部的数据,可以看到我们查出来的结果有两个,一个字段city值是York,另一个是New York。 接下来使用match进行York的匹配,因为match是分词匹配的,两个文档中都有York,所有都查询出来了, 我们使用term...

cainiao1412的博客 2763

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

ES-- match查询

2.2、match查询 match查询属于高层查询,会根据你查询的字段的类型不一致,采用不同的查询方式。 如果查询的是日期或者数值的字段,他会自动将你的字符串查询内容转换成日期或者数值对待; 如果查询的内容是一个不能被分词的字段(keyword).match查询不会对你的指定查询关键字进行分词; 如果查询的内容是一个可以分词的字段(text),match会将你指定的查询内容根据一定的方式去分词,然后去分词库中匹配指定的内容。 总而言之:match查询,实际底层就是多个term查询,将多个term查询的结

chbxw 1万+

ElasticSearch在Java中实现match查询

ElasticSearch在Java中实现match查询 适用范围ElasticSearch6.x 如果是ElasticSearch7或以上版本情转到如下链接 REST高级客户端-DocumentApi:https://blog.youkuaiyun.com/u014646662/article/details/96473156 REST高级客户端SearchApi:https://blog.csdn...

周天祥的博客 2万+

ElasticSearch 匹配查询(match、match_phrase)

ElasticSearch 匹配查询(match、match_phrase) match查询属于全文查询,在查询时,ES会先分析查询字符串,然后根据分词构建查询。 match_phrase在查询时也会先分析查询字符串,然后对这些词项进行搜索,不同的是match_phrase查询只会保留包含全部查询字符串的文档 1、先向ES查询俩个文档,以便测试: PUT test2/_doc/1 { "name": "宝马法拉利兰博基尼" } PUT test2/_doc/2 { "name": "宝马兰博基尼布

鲨鱼辣椒的博客 6205

掌握 ElasticSearch 四种match查询的原理与应用

本文将重点介绍 Elasticsearch 7.10 版本中四种核心的全文检索查询:`match`、`match_all`、`multi_match` 和 `match_phrase`。通过本文,你将掌握这些查询的基本概念、语法和使用场景,并通过丰富的示例学会如何在实践中应用它们。

weixin_44283682的博客 1543
上一篇: Elasticsearch 在Windows下的安装
下一篇: Elasticsearch删除一个type下的所有数据
Merlyj
博客等级 码龄10年 5粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值