es 之term和match区别


区别

  - match是经过analyer的,也就是说,文档首先被分析器处理了。根据不同的分析器,分析的结果稍有不同。然后再根据分词结果进行匹配

  - term则不经过分词,它是直接去倒排索引中查找精确的值。

PUT w4
{
  "mappings": {
    "properties": {
      "t1": {
        "type": "keyword"
      },
      "t2": {
        "type": "text"
      }
    }
  }
}


PUT w4/_doc/1
{
  "t1": "hi xi fan",
  "t2": "hi xi fan"
}

GET w4/_search
{
  "query": {
    "match": {
      "t2": "hi"
    }
  }
}

GET w4/_search
{
  "query": {
    "term": {
      "t2": "hi xi fan"         # 这个是查不到结果的因为t2本来就是text类型(默认分词的)而term查询的时候不会以词之后的结果的匹配,是以精确完整的内容去匹配,所以是匹配不到的
    }
  }
}

GET _analyze
{
  "analyzer": "standard",
  "text": "hi xi fan"
}

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM