elasticsearch中term与match

2 篇文章 0 订阅
订阅专栏

分词器、字符串类型、倒排索引

在说term和match之前,需要先了解一下这三个概念

分词器

es默认的分词器是standard analyzer,该分词器的特点是:将所有英文字符串的大写字母转换成小写字母,然后按照空格对英文字符串进行分词,如果遇到汉字,则将汉字一个字作为一个分词。可以看出,该分词器对于中文句子的分词效果来说并不好,无法以合适的中文词组来分词。
为了提高中文的分词效果,可以增加ik分词器插件,该插件提供了两种好用的分词策略:最少切分ik_smart analyzer和最细粒度切分ik_max_word analyzer,前者的每个分词都没有重复切分的字,后者则可以有重复切分,后者的分词集合通常来说会比前者大。
keyword analyzer是专门为keyword类型的字符串准备的分词器,该分词器的特点是:不会对字符串进行切分,即分词集合只包含一个字符串。

字符串类型

es比较常用的字符串类型是textkeyword,默认是text。
text可以被分词器分词(默认使用分词器standard analyzer,也可以指定别的分词器),keyword不可以被分词(使用了分词器keyword analyzer)

倒排索引

当向es中添加一个文档时,文档中可被分词的字段(除了keyword类型之外的字段)会被分词器(默认使用分词器standard analyzer,也可以指定别的分词器)进行分词,形成一个分词集合存储在倒排索引中。也就是说,对于可分词的字段,es中存储的并不是一串完整的字符串,而是该字符串的一个一个的分词。

精确匹配term

term的查询参数不会被分词器分词,es会将完整的查询参数与倒排索引中对应字段的分词集合进行对比查询。
term查询中文句子的效果比较差,不建议在这种场景下使用term

模糊匹配match

match的查询参数(keyword类型除外)会被分词器分词,使用的分词器是所查询字段在mappings中指定的分词器,默认为standard analyzer。查询参数被分词后产生的分词集合与倒排索引中相应字段的分词集合进行对比查找,只要有一个分词匹配成功,该文档就会被纳入检索结果返回。

es查询的基本流程

1.mappings指定字段类型和分词器
2.新增文档
3.es对新增文档中的字段(keyword类型的字段除外)使用mappings中相应字段指定的分词器(默认为standard analyzer)来进行分词,将分词结果存入倒排索引中;keyword类型的字段直接存储整个字段内容
4.搜索文档
5.搜索参数字段类型是否为keyword
6.是,则不管term还是match搜索,搜索参数都不会被分词,搜索参数字段整个内容形成只包含一个内容的分词集合
7.否,则当使用term搜索时,搜索参数不会被分词;当使用match搜索时,搜索参数会被mappings中相应字段指定的分词器(默认为standard analyzer)分词,形成分词集合
8.将搜索的分词集合与es中相应字段的倒排索引进行匹配搜索,es每一个文档中只要有一个分词与分词集合的任一分词匹配,则将此文档放入搜索结果中返回

term和match的区别

两者最大的区别就是:当搜索参数为text类型的字段时,有没有对搜索参数进行分词操作!term没有,而match有。

例子

创建一个索引testes并构建mappings,定义三个字段:title(类型:text,分词器:standard analyzer),content(类型:text,分词器:ik_max_word analyzer),desc(类型:keyword)
创建一个索引testes并构建mappings
新增两个文档
新增两个文档
对title进行分词

第一个文档
title分词1
结果
title分词结果1

第二个文档

title分词2

结果
title分词结果2

对content进行分词

第一个文档
content分词2
结果
content分词结果1

第二个文档
content分词2
结果
content分词结果2
term搜索

title搜索“今天”
title搜索“今天”
结果
title搜索“今天”结果
title搜索“吃”
title搜索“吃”
结果
title搜索“吃”结果
content搜索“面条”
content搜索“面条”
结果
content搜索“面条”结果
content搜索“吃”
content搜索“吃”
结果
content搜索“吃”
desc搜索“好吃”
desc搜索“好吃”
结果
desc搜索“好吃”结果
desc搜索“面很好吃”
desc搜索“面很好吃”

结果
desc搜索“面很好吃”结果
match搜索

title搜索“明天”

对“明天”进行分词
“明天”分词
“明天”分词结果
“明天”分词结果
搜索
title搜索“明天”
结果
title搜索“明天”结果
content搜索“吃”
content搜索“吃”
结果
content搜索“吃”结果

content搜索“牛肉”

对“牛肉”进行分词
对“牛肉”进行分词

“牛肉”分词结果
“牛肉”分词结果

搜索
content搜索“牛肉”

结果

content搜索“牛肉”结果
desc搜索“好吃”
desc搜索“好吃”

结果
desc搜索“好吃”结果
desc搜索“肉最好吃了”
desc搜索“肉最好吃了”

结果
desc搜索“肉最好吃了”结果
参考博客
Elasticsearch 入门教程 – term 查询和match 查询(text和keyword)
Elasticsearch教程(28) text和keyword区别 term和match区别 ik中文分词器使用

Elasticsearch term 查询和 match 查询的区别
杨杨杨~~的博客
08-30 868
如果您觉得有用的话,记得给,写作不易啊^ _ ^。而且听说,实在白嫖的话,那欢迎常来啊!!!如果需要精确匹配某个值,应该使用term查询。如果需要进行全文搜索或模糊匹配,应该使用match查询。
elasticsearch termmatch区别
热门推荐
sxf_123456的博客
12-19 1万+
elasticsearch termmatch区别 term是精确查询 match是模糊查询 term查询 term是代表完全匹配,也就是精确查询,搜索前不会再对搜索词进行分词,所以我们的搜索词必须是文档分词集合的一个。比如说我们要找标题为北京奥运的所有文档 $curl -XGET http://localhost:9200/index/doc/_search?pr
elasticsearchtermmatch的区别讲解
08-26
今天小编就为大家分享一篇关于elasticsearchtermmatch的区别讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
Elasticsearch学习系列之termmatch查询
aen60571的博客
02-22 1003
Elasticsearch查询模式 一种是像传递URL参数一样去传递查询语句,被称为简单查询 GET /library/books/_search //查询index为library,type为books的全部内容 GET /library/books/_search?q=price:10 //查询index为library,type为booksprice等于10的 另...
Elasticsearch termterms 和 match 查询
小湘西的博客
01-20 2282
Elasticsearch termterms 和 match 查询是基础的搜索操作,它们分别适用于不同的场景。termterms 用于精确匹配,而 match 用于全文搜索。了解它们的差异和适用情况对于构建有效的搜索查询至关重要。
Elasticsearch查询规则(一)matchterm
thulpf的专栏
06-25 902
elasticsearchmatch搜索和term搜索方式介绍
elasticsearchmatchterm区别
ilovexiaou的博客
10-26 294
esmatchterm的区别
实例演示ElasticSearch索引查询term,match,match_phase,query_string之间的区别
feinifi的博客
09-03 8517
通常在面试elasticsearch,面试官会问一个关于查询的问题,就是term查询和match查询有什么区别?如果你对这两个查询不清楚,面试官会认为你没有用过elasticsearch,或者就是用了也不是很深入。 下面通过实例来演示索引检索时term,match他们之间的区别: match:模糊匹配,需要指定字段名,但是输入会进行分词,比如"hello world"会进行拆...
ElasticSearch termmatch查询机制解析和隐藏的查询问题
Time_Travel的博客
05-06 4111
2. 关于默认分析使用term查询的问题 之前说过es的默认分析器会讲文拆分成一个个的单个汉子,搜索条件“内科”会被分析为“内”和“科”,从而进行搜索。而对于搜索我们常用的match搜索类似于数据库的模糊查询,term搜索为精确查询。使用的时候会出现以下情况: 2.1 场景 默认不对索引下的字段进行mapping操作时,使用的是默认分析器,假设有如下数据内容: 内科 内一科 内...
elasticsearchtermmatch区别
不花的花和尚的博客
12-04 1407
elasticsearch termmatch区别 term是精确查询 match是模糊查询 term查询 term是代表完全匹配,也就是精确查询,搜索前不会再对搜索词进行分词,所以我们的搜索词必须是文档分词集合的一个。比如说我们要找标题为北京奥运的所有文档 $curl -XGET http://localhost:9200/index/doc/_search?pretty -d...
elasticsearch 查询(matchterm
justlpf的专栏
03-04 443
参考文章:elasticsearch 查询(matchterm) //主查询 matchQuery.must( QueryBuilders.boolQuery() .should(QueryBuilders.matchQuery("xm","好的"))//分词后匹配 .should(QueryBuilders.matchParaseQuery("addr","钱江...
Elasticsearch - 直观了解查询( termmatchmatch_phrase和query_string)区别
最新发布
jarniyy的博客
07-15 254
如“我真帅”分词为[“我”,“真”,“帅”,“真帅”],match_phrase 的查询语句“真帅”被分词为[“真帅”],其“真帅”能匹配上text字段的分词结果,连续且顺序相同,所以能查出。如“我真帅”分词为[“我”,“真”,“帅”],match的查询语句“真帅”被分词为[“真”,“帅”],其“真”、“帅”能匹配上text字段的分词结果,所以能查出。如“我真帅”分词为[“我”,“真”,“帅”],term必须为“我”或“真”或“帅”,才能查到,而“我帅”、“真帅”不行。match 查询语句分词。
ElasticSearch查询 第四篇:匹配查询(Match
幽雨雨幽
11-12 1849
ElasticSearch查询》目录导航: ElasticSearch查询 第一篇:搜索API ElasticSearch查询 第二篇:文档更新 ElasticSearch查询 第三篇:词条查询 ElasticSearch查询 第四篇:匹配查询(MatchElasticSearch查询 第五篇:布尔查询 匹配(Match)查询属于全文(Fulltext)查询,不同于词条查询,ElasticSearch引擎在处理全文搜索时,首先分析(analyze)查询字符串,然后根据分词构建查询,最终.
Elasticsearch 查询之term,match,match_phrase
zhanggf的博客
06-01 2226
1. term查询是基于词项的查询,而且当设置为term查询时,es不会对这个词做任何处理,但是在文本进行分词时,通常都会将大写转为小写,这个时候就会出现查不出来的情况,比如: POST /test/_doc { "name":"Pantheon" } 这样创建出来的doc可以看到明显做了lowercase,因为用的standard分词器 GET /test/_analyze { "field": "name", "text": "Pantheon" } 所以当使用下面的语句去查
es(4)—查询条件matchterm
qq_29595463的博客
04-20 3616
文章目录1. matchterm的区别2. 实战分析2.1 数据准备2.2 倒排索引存储的值2.3 使用term查询text类型(不推荐)2.4 term查询keyword等类型的数据2.4 match查询text类型2.4 match的and操作2.5 match查询keyword类型3. match的底层转换 在es的复杂查询,比较常用的查询条件就是matchterm了。那么他们有什么区别呢? 1. matchterm的区别 match会进行分词,将分词后的field去倒排索引寻找文档;
ElasticSearch全文搜索引擎之termmatch的区别
weixiaohuai的博客
10-05 9815
一、简介 在elasticsearch,查询主要使用到两个:termmatch,本篇文章将总结一下两者的区别。 term:代表完全匹配,也就是精确查询,搜索前不会再对搜索词进行分词解析,直接对关键词进行查找; match:代表模糊匹配,搜索前会对搜索词进行分词解析,然后按分词匹配查找; 一般模糊查找的时候,多用match,而精确查找时可以使用term。 二、term精确匹配 term查询是直接通过倒排索引指定的词条进行查找的。 首先创建一个索引member,并插入几条测试数据,相关命
ElasticSearch-DSL搜索 termmatch
叶为正的博客
03-10 373
term精确搜索 搜索的时候会把用户搜索内容,比如“我知道”作为一整个关键词去搜索,而不会对其进行分词后再搜索 POST http://10.0.0.220:9200/shop/_doc/_search { "query":{ "term":{ "nickname":"我知道" } }, "_source":[ "id", "nickname", "age" ] } head可视化操作: terms 多个词语匹配检索 POST http://10.0.
Elasticsearchtermmatch查询
qq_39773004的博客
11-03 212
一、term查询 POST java实现 二、match查询 3. java实现 三、 其他查询
elasticsearchtermmatch
04-06
Elasticsearchtermmatch是检索数据时的两种不同方式。term是精确匹配,只返回与输入项完全匹配的结果。而match则是模糊匹配,可以返回与输入项相似但不一定完全匹配的结果。在使用时需要根据需求选择适当的方式进行查询。
写文章

热门文章

  • Elasticsearch-BulkRequest和BulkProcessor简述 8783
  • mybatis三种映射方式 6869
  • elasticsearch中term与match 2234
  • php使用字符串来引用类 984
  • Eureka & Ribbon实现服务调用和负载均衡 848

分类专栏

  • spring 1篇
  • 设计模式 5篇
  • elasticsearch 2篇
  • 微服务 6篇
  • 多线程并发编程 13篇
  • 数据结构与算法 8篇
  • servlet 1篇
  • mysql
  • Eclipse
  • Tomcat 1篇
  • mybatis 1篇
  • php&mysql 2篇
  • php 1篇
  • javaee

最新评论

  • Elasticsearch-BulkRequest和BulkProcessor简述

    进击的西红柿丶: 篮子

  • Elasticsearch-BulkRequest和BulkProcessor简述

    进击的西红柿丶: 篮子

  • elasticsearch中term与match

    大家一起学编程(python): 冲冲冲

  • Elasticsearch-BulkRequest和BulkProcessor简述

    彼 方: 文章写得很好,初来乍到,希望多多关注。期待你的回复,谢谢!

  • elasticsearch中term与match

    Lansonli: 文章不错喔~

最新文章

  • Elasticsearch-BulkRequest和BulkProcessor简述
  • Spring Cloud OpenFeign基本使用
  • Eureka & Ribbon实现服务调用和负载均衡
2021年2篇
2020年49篇
2019年3篇

目录

目录

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

玻璃钢生产厂家生肖玻璃钢雕塑怎么选亳州小品系列玻璃钢雕塑价格张掖市玻璃钢雕塑优质耐用的玻璃钢雕塑郑州玻璃钢雕塑制作公司绍兴商场美陈批发价浙江玻璃钢雕塑摆件多少钱重庆玻璃钢雕塑卡通玻璃钢雕塑漆怎样上色上海玻璃钢牛头雕塑荆门火烈鸟玻璃钢雕塑公司评价好的玻璃钢花盆玻璃钢小雕塑制造过程贵州人物玻璃钢雕塑通道商场美陈哪里有玻璃钢雕塑和水泥雕塑商场装饰玻璃钢卡通雕塑要求南京城市玻璃钢雕塑加工寿宁玻璃钢花盆花器江苏知名玻璃钢雕塑产品介绍芜湖玻璃钢古代人物雕塑设计玻璃钢雕塑景墙有行业标准吗郑州多彩玻璃钢雕塑安徽人物玻璃钢雕塑雕塑厂家定制玻璃钢河南玻璃钢人物城市雕塑江门玻璃钢学校雕塑商场里的美陈玻璃钢雕塑定制产品介绍通化玻璃钢商场美陈香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化