ElasticSearch中match和term的区别(第六更)

首先先创建两个文档数据!

PUT /my_index6/_doc/1
{
  "name":"张三",
  "age":21,
  "tags":["内向","孤独","自尊心强"]
}

PUT /my_index6/_doc/2
{
  "name":"小花",
  "age":23,
  "tags":["简单","低调","善良"]
}

在这里插入图片描述

可以看到 默认创建的两个文档的类型是

name:text 类型
age :long 类型
tags:text 类型

所以查询name或tags的时候会使用到分词器进行分词!

最简单的查询

GET /my_index6/_doc/_search?q=name:"张"

在这里插入图片描述

复杂查询1 match和term的区别

GET /索引名/_search
{请求体 json}

在这里插入图片描述
在这里插入图片描述

match:当查询“小花”的时候则可以直接查出,因为使用match相当于模糊查询,只要文档包含搜索的内容就可以被查出!
term:显而易见,直接查询“小花”则不可以被查出,因为使用term就会在搜索前到文档分词集合中去查找,例如 当时PUT的时候创建了name=“小花”的文档,这时文档就会把小花分成“小”,“花”两个词,所以刚才我们直接查询“小花”的时候才没有被查询出来!

那问题来了,显然使用term的时候会有很大的不便之处,因为我们不知道es到底怎么把我们的中文进行分词,这时候又是IK分词器上场了!

使用IK分词器 避免term时中文胡乱分词问题!

先看一下不适用IK分词器的时候es默认分词是什么样的。

在这里插入图片描述
果然分成了“小”,“花”,那使用IK分词器呢?

在这里插入图片描述
可以看到,IK分词器默认把“小花“当成一个词,这显然更符合中文对于”词“的理解!

所以如果我们要使用term要搜索的条件是中文的话 就是用ik分词器帮助我们!

或许现在的理解还不太到位,后面学习更多就会及时更新的!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

掂掂三生有幸

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值