ES中term、terms、match的区别

term query会去倒排索引中寻找确切的term,它并不知道分词器的存在,这种查询适合keyword、numeric、date等明确值的

term:查询某个字段里含有某个关键词的文档

GET /customer/doc/_search/
{
  "query": {
    "term": {
      "title":   "blog"
    }
  }
}

terms:查询某个字段里含有多个关键词的文档

GET /customer/doc/_search/
{
  "query": {
    "terms": {
      "title":  [ "blog","first"]
    }
  }
}

match query 知道分词器的存在,会对field进行分词操作,然后再查询

GET /customer/doc/_search/
{
  "query": {
    "match": {
      "title":  "my ss"   #它和term区别可以理解为term是精确查询,这边match模糊查询;match会对my ss分词为两个单词,然后term对认为这是一个单词
    }
  }
}
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐