四、查询文档(term和match)

查询文档

  • 词条查询 term:不会分析查询条件,只有当词条和查询字符串完全匹配时才匹配搜索
  • 全文查询 match:会分析查询条件,先将查询条件进行分词,然后查询,最后求并集
# term 词条查询。查询的条件字符串和词条要完全匹配
# field指要查询的字段,value指查询的条件字符串
GET person/_search
{
  "query": {
    "term": {
      "address": {
        "value": "北京"
      }
    }
  }
}

注意:es默认使用的是standard分词器,会将“北京”分为“北”和“京”,所以这里通过term查“北京”是查不到的。

在设置了ik分词器的场景下用term进行查询

  1. 首先将在创建索引添加映射时,将要查询的address字段指定为使用ik分词器:
# 创建索引,添加映射,指定使用ik分词器
PUT person
{
  "mappings": {
    "properties": {
      "name":{
        "type": "keyword"
      },
      "address":{
        "type": "text",
        "analyzer": "ik_max_word"
      }
    }
  }
}
  1. 添加文档
PUT person/_doc/id2
{
  "name":"王五",
  "address":"中国北京天门安"
}
  1. term查询
GET person/_search
{
  "query": {
    "term": {
      "address": {
        "value": "北京"
      }
    }
  }
}

这里可以查到,因为ik分词器对“中国北京天安门”进行了分词,分词中有“北京”这个词,所以能和term中的“北京”完全匹配上。

但如果term查的是“北京昌平”,就查不到了,因为无法完全匹配。

  1. match查询
GET person/_search
{
  "query": {
    "match": {
      "address": "北京昌平"
    }
  }
}

这里可以查到,因为match对北京昌平进行了分词,分词得到的“北京”成功匹配上了ik分词器对“中国北京天安门”进行分词得到的“北京”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值