目录
1.概念
1.1.term与match
1.2.text与keyword
2.Term + Text/Keyword
(1)term查询text字段
(2)term查询keyword字段
3.Match + Text/Keyword
(1)match查询text字段
(2)match查询keyword字段
4.Match – Match_phrase
5.Match – Multi_match
6.Query_String
7、实际案例参考
参考文章:Elasticsearch中 match、match_phrase、query_string和term的区别
1.概念
1.1.term与match
term是精确查询
match是模糊查询
1.2.text与keyword
ES更新到5版本后,取消了 string 数据类型,代替它的是 keyword 和 text 数据类型。
Text
Text 数据类型被用来索引长文本,比如说电子邮件的主体部分或者一款产品的介绍。这些文本会被分析,在建立索引前会将这些文本进行分词,转化为词的组合,建立索引。允许 ES来检索这些词语。text 数据类型不能用来排序和聚合。
Keyword
Keyword 数据类型用来建立电子邮箱地址、姓名、邮政编码和标签等数据,不需要进行分词。可以被用来检索过滤、排序和聚合。keyword 类型字段只能用本身来进行检索。
注意:如果不像以上通过mapping 配置索引时,遇到字符串类型时候的字端,系统会默认为“text”类型。检索的时候对字符串进行分析。所以要想只通过字段本身来进行检索,还是需要按照上面把该字段改为“keyword”类型。
以下参考:Elasticsearch中 match、match_phrase、query_string和term的区别
2.Term + Text/Keyword
(1)term查询text字段
因为text字段会分词,而term不分词,所以term查询的条件必须是text字段分词后的某一个。
(2)term查询keyword字段
term不会分词。而keyword字段也不分词。需要完全匹配才可。
3.Match + Text/Keyword
(1)match查询text字段
match分词,text也分词,只要match的分词结果和text的分词结果有相同的就匹配。
Match查询会先对搜索词进行分词,分词完毕后再逐个对分词结果进行匹配,因此相比于term的精确搜索,match是分词匹配搜索,match搜索还有两个相似功能的变种,一个是match_phrase,一个是multi_match。
(2)match查询keyword字段
match会被分词,而keyword不会被分词,match的需要跟keyword的完全匹配可以。
4.Match – Match_phrase
match_phrase的用法:
主要知识点:
- match_phrase的使用场景
- match_phrase的用法
- match_phrase的原理
一、什么是近似匹配
match_phrase的使用场景
现假设有两个句子
1、java is my favourite programming language, and I also think spark is a very good big data system.
2、java spark are very related, because scala is spark’s programming language and scala is also based on jvm like java.
进行match query,query语法如下:
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/152079.html