好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

elasticsearch中term与match的区别讲解

elasticsearch 中term与match区别

term是精确查询 match是模糊查询

term查询

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

?

1

2

3

4

5

6

7

8

$curl -xget http: //localhost:9200/index/doc/_search?pretty -d

'{

  "query" :{

   "term" :{

     "title" : "北京奥运"

   }

  }

}'

将会得到如下结果

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

{

   "took" : 1 ,

   "timed_out" : false ,

   "_shards" : {

     "total" : 5 ,

     "successful" : 5 ,

     "failed" : 0

   },

   "hits" : {

   "total" : 1 ,

   "max_score" : 0.92055845 ,

   "hits" : [

    {

     "_index" : "index" ,

     "_type" : "doc" ,

     "_id" : "3" ,

     "_score" : 0.92055845 ,

     "_source" : {

       "content" : "同一个世界同一个梦想" ,

       "title" : "北京奥运" ,

       "tags" : [

         "和平"

       ]

     }

    }

   ]

  }

}

match类查询

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

match

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

?

1

2

3

4

5

6

7

8

$curl -xget http: //localhost:9200/index/doc/_search?pretty -d

'{

   "query" : {

     "match" : {

       "content" : "中国杭州"

     }

   }

}'

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

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

{

  "took" : 1 ,

  "timed_out" : false ,

  "_shards" : {

   "total" : 5 ,

   "successful" : 5 ,

   "failed" : 0

  },

  "hits" : {

    "total" : 2 ,

    "max_score" : 0.99999994 ,

    "hits" : [ {

       "_index" : "index" ,

       "_type" : "doc" ,

       "_id" : "4" ,

       "_score" : 0.99999994 ,

       "_source" : {

          "content" : "杭州是一个美丽的城市,欢迎来到杭州" ,

         "title" : "宣传" ,

         "tags" : [ "旅游" , "城市" ]

       }

     }, {

       "_index" : "index" ,

       "_type" : "doc" ,

       "_id" : "2" ,

       "_score" : 0.8838835 ,

       "_source" : {

          "content" : "中国是世界上人口最多的国家" ,

          "title" : "中国" ,

          "tags" : [ "中国" , "人口" ]

       }

     } ]

   }

}

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。如果你想了解更多相关内容请查看下面相关链接

原文链接:https://blog.csdn.net/sxf_123456/article/details/78845437

查看更多关于elasticsearch中term与match的区别讲解的详细内容...

  阅读:23次