elasticsearch match模糊查询

举报
风吹稻花香 发表于 2021/06/04 23:15:46 2021/06/04
【摘要】   elasticsearch 中term与match区别 elasticsearch 中term与match区别 term是精确查询 match是模糊查询   term查询   term是代表完全匹配,也就是精确查询,搜索前不会再对搜索词进行分词,所以我们的搜索词必须是文档分词集合中的一个。比如说我们要找标题为北京奥运的所有文档...

 

elasticsearch 中term与match区别

elasticsearch 中term与match区别

term是精确查询

match是模糊查询

 

term查询

 

term是代表完全匹配,也就是精确查询,搜索前不会再对搜索词进行分词,所以我们的搜索词必须是文档分词集合中的一个。比如说我们要找标题为北京奥运的所有文档


  
  1. $curl -XGET http://localhost:9200/index/doc/_search?pretty -d
  2. '{
  3. "query":{
  4. "term":{
  5. "title":"北京奥运"
  6. }
  7. }
  8. }'

将会得到如下结果


  
  1. {
  2. "took": 1,
  3. "timed_out": false,
  4. "_shards": {
  5. "total": 5,
  6. "successful": 5,
  7. "failed": 0
  8. },
  9. "hits": {
  10. "total": 1,
  11. "max_score": 0.92055845,
  12. "hits": [
  13. {
  14. "_index": "index",
  15. "_type": "doc",
  16. "_id": "3",
  17. "_score": 0.92055845,
  18. "_source": {
  19. "content": "同一个世界同一个梦想",
  20. "title": "北京奥运",
  21. "tags": [
  22. "和平"
  23. ]
  24. }
  25. }
  26. ]
  27. }
  28. }

match类查询

match查询会先对搜索词进行分词,分词完毕后再逐个对分词结果进行匹配,因此相比于term的精确搜索,match是分词匹配搜索,match搜索还有两个相似功能的变种,一个是match_phrase,一个是multi_match,接下来详细介绍一下

match

前面提到match搜索会先对搜索词进行分词,对于最基本的match搜索来说,只要搜索词的分词集合中的一个或多个存在于文档中即可,例如,当我们搜索中国杭州,搜索词会先分词为中国杭州,只要文档中包含搜索杭州任意一个词,都会被搜索到


  
  1. $curl -XGET http://localhost:9200/index/doc/_search?pretty -d
  2. '{
  3. "query": {
  4. "match": {
  5. "content": "中国杭州"
  6. }
  7. }
  8. }'

文档3正文中有杭州,文档2中有中国,因此搜索结果有两个,文档3中杭州出现两次,所以排在前面,结果如下:


  
  1. {
  2. "took" : 1,
  3. "timed_out" : false,
  4. "_shards" : {
  5. "total" : 5,
  6. "successful" : 5,
  7. "failed" : 0
  8. },
  9. "hits" : {
  10. "total" : 2,
  11. "max_score" : 0.99999994,
  12. "hits" : [ {
  13. "_index" : "index",
  14. "_type" : "doc",
  15. "_id" : "4",
  16. "_score" : 0.99999994,
  17. "_source" : {
  18. "content" : "杭州是一个美丽的城市,欢迎来到杭州",
  19. "title" : "宣传",
  20. "tags" : [ "旅游", "城市" ]
  21. }
  22. }, {
  23. "_index" : "index",
  24. "_type" : "doc",
  25. "_id" : "2",
  26. "_score" : 0.8838835,
  27. "_source" : {
  28. "content" : "中国是世界上人口最多的国家",
  29. "title" : "中国",
  30. "tags" : [ "中国", "人口" ]
  31. }
  32. } ]
  33. }
  34. }

文章来源: blog.csdn.net,作者:网奇,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/jacke121/article/details/85247030

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。