ElasticSearch:模糊查询,是match、fuzzy还是wildcard?™和SQL中like的区别

导读:本篇文章讲解 ElasticSearch:模糊查询,是match、fuzzy还是wildcard?™和SQL中like的区别,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

引子:DSL 和SQL中模糊查询一样吗

大家好,我是马儿
今天来说一下模糊查询的事,我们使用关系型数据库时,模糊查询使用的就是like,加上通配符

通配符 说明
% 包含0个或多个字符的任意字符
_(下划线) 任意1个字符

那ElasticSearch中模糊查询是什么呢,我们知道term是精确查询,有的地方说match是模糊,有的地方说wildcard是模糊,甚至还有fuzzy等,字面意思就是‘模糊’的语句,他们有什么区别呢

ElasticSearch中的模糊查询

举个例子,我们有个人物名单索引listofhistoricalfigures
里面name字段内容如下

  1. 张三
  2. 张三丰
  3. 张飞
  4. 三德子
  5. 张二丰
  6. 孙权
  7. 马三丰

结构是下面这样,text支持分词查询,keyword支持精确查询
详情可参考这一篇 ElasticSearch 使用term时.keyword加不加的区别

 
 "name": {
            "type": "text",
            "fields": {
              "keyword": {
                "type": "keyword"
              }
            }
         }

match 分词匹配检索

match
英 [mætʃ] 美 [mætʃ]
n. 火柴;比赛;竞赛;敌手;旗鼓相当的人
v.般配;相配;相同;相似;相一致;找相称(或相关)的人(或物);配对

match字面意思是 相似;相一致;找相称(或相关)的人(或物);配对

GET listofhistoricalfigures/_search 
'{
    "query": {
        "match": {
            "name": "张三"
        }
    }
}

我们使用match和默认分词器,会把张三进行分词,分成张、三、张三进行检索
会匹配到的结果有

张三
张三丰
张飞
三德子
张二丰
马三丰

wildcard 通配符检索

wildcard
美 [ˈwaɪldˌkɑrd]
n.未知数;未知因素;(给予没有正常参赛资格的选手准其参加比赛的)“外卡”;“外卡”选手;
(用于代替任何字符或字符串的)通配符

wildcard字面意思是 通配符

GET listofhistoricalfigures/_search 
'{
    "query": {
        "wildcard": {
            "name.keyword": "张三*"
        }
    }
}

使用wildcard相当于SQL的like,前后都可以拼接*,表示匹配0到多个任意字符
加.keyword是要匹配完整的词
会匹配到的结果有

张三
张三丰

fuzzy 模糊/纠错检索

fuzzy
英 [ˈfʌzi] 美 [ˈfʌzi]
adj. 覆有绒毛的;毛茸茸的;紧鬈的;拳曲的;(形状或声音)模糊不清的

fuzzy字面意思是 模糊

GET listofhistoricalfigures/_search 
'{
    "query": {
        "fuzzy": {
            "name.keyword": "张三"
        }
    }
}

使用fuzzy就行百度一样,你输入个“邓子棋”,也能把“邓紫棋”查出来,有一定的纠错能力
加.keyword是要匹配完整的词
会匹配到的结果有

张三
张三丰
张飞
张二丰
马三丰

结论

1.match 分词匹配检索,可以对查询条件分词,查到更多匹配的内容,结合不同的分词器,可以得到不同的效果

2.wildcard 通配符检索功能就像传统的SQL like一样,如果数据在es,你又想得到传统的“模糊查询”结构时,用wildcard

3.fuzzy 纠错检索,让输入条件有容错性

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/93741.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!