ES中match和term差别对比

原创 2018年04月16日 10:01:11

match在匹配时会对所查找的关键词进行分词,然后按分词匹配查找,而term会直接对关键词进行查找。一般模糊查找的时候,多用match,而精确查找时可以使用term。

举个例子说明一下:

{  
    "match": { "title": "my cat"}  
}
{  
  "bool": {  
    "should": [  
      { "term": { "title": "my" }},  
      { "term": { "title": "cat"   }}  
    ]  
  }  
} 

match 会将关键词进行分词分成“my”和“cat”,查找时包含其中任一均可被匹配到。

term结合bool使用,不进行分词,但是有2个关键词,并且使用“或”匹配,也就是会匹配关键字一“my”或关键字“cat”,效果和上面的match是相同的。如果要想精确的匹配“my cat”而不匹配“my lovely cat”,则可以如下方式匹配:

{  
  "bool": {  
    "should": [  
      { "term": { "title": "my cat" }}  
    ]  
  }  
} 

是不是还挺简单的,有一点需要注意一下,term结合bool使用时:should是或,must是与,must_not是非(还有一种filter,不说了这个)

{  
    "match": {  
        "title": {  
            "query":    "my cat",  
            "operator": "and"  
        }  
    }  
}  
{  
  "bool": {  
    "must": [  
      { "term": { "title": "my" }},  
      { "term": { "title": "cat"   }}  
    ]  
  }  
} 
上面这两个查询就是等效的,match的与对应bool的must,也就是说my和cat需要都出现才算匹配上。

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/tclzsn7456/article/details/79956625

term query与match query区别

看官方提供的例子 PUT my_index { "mappings": { "my_type": { "properties": { "full_text":...
  • lom9357bye
  • lom9357bye
  • 2016-10-18 21:50:48
  • 2489

elasticsearch 查询(match和term)

elasticsearch 查询(match和term) es中的查询请求有两种方式,一种是简易版的查询,另外一种是使用JSON完整的请求体,叫做结构化查询(DSL)。 由于DSL查询更为直观也更...
  • paul342
  • paul342
  • 2015-10-22 10:58:55
  • 637

Elasticsearch DSL中Query与Filter的区别

Elasticsearch支持很多查询方式,除了通过9300(默认)端口通过TCP协议进行查询,另一种就是DSL,它是把请求写在JSON里面,然后进行相关查询。一个DSL例子GET _search{ ...
  • xifeijian
  • xifeijian
  • 2016-03-07 23:13:21
  • 11373

关于全文搜索elasticsearch中matchQuery和termQuery的区别

如题,本文主要讲关于全文搜索elasticsearch中matchQuery和termQuery的区别,附带一点其它查询用法。 准备工作,下载相关jar包,本文所有jar包列表: apache-l...
  • yunsyz
  • yunsyz
  • 2016-07-22 18:10:36
  • 16722

Es match与term

es种有两种查询模式,一种是像传递URL参数一样去传递查询语句,被称为简单搜索或查询字符串(query string)搜索,比如 GET /megacorp/employee/_search //查询...
  • wanghjbuf
  • wanghjbuf
  • 2017-04-16 23:40:46
  • 433

Elasticsearch 5.0 中term 查询和match 查询(text和keyword)

Elasticsearch 5.0 关于term query和match query的认识一、基本情况前言:term query和match query牵扯的东西比较多,例如分词器、mapping、倒...
  • yangwenbo214
  • yangwenbo214
  • 2017-01-06 21:20:31
  • 10091

Elasticsearch的DSL之 term and match

记录学习ES的DSL的一些比较重要的概念和方法。 term VS match 首先要说的是, 一个doc进入ES被索引,哪些字段(fields)被索引是可以自定义的。 默认,ES会...
  • smithallenyu
  • smithallenyu
  • 2016-04-21 11:23:33
  • 1299

在网上看到的关于es的querystring的问题,值得留意

问题 今天,我们的业务给我报了一个问题,说商品"视丽 花样系列美瞳"此品搜索不到,于是,我问业务要了搜索关键词和商品名称一样,发觉还真是搜索不到,遂排查问题,先给大家报告一下我的环境 ...
  • sd4015700
  • sd4015700
  • 2013-11-14 14:53:23
  • 3267

ES查询term的用法

1、term 的用法 term检索,如果content分词后含有中国这个token,就会检索到curl -XPOST http://192.168.1.101:9200/index/fulltext...
  • lijuqi
  • lijuqi
  • 2017-01-10 15:11:24
  • 3534
收藏助手
不良信息举报
您举报文章:ES中match和term差别对比
举报原因:
原因补充:

(最多只允许输入30个字)