Elasticsearch(ES)中 term与match之间的区别

目录

      • 基本介绍
      • 例子:
      • 解决方案

基本介绍

term采用的是精确查询
match采用的是模糊查询
两者的区别:
当采用mathch去查询: 首先会将查询条件进行分词,然后在与文档里面的分词进行匹配,匹配度越高分数越高越前面
当采用term去查询:不会将查询条件分词,然后直接与文档里面的分词进行匹配。
详细看下面例子

例子:

首先是结构 name采用了分词
Elasticsearch(ES)中 term与match之间的区别_第1张图片
然后我们以“上海嘉定喜来登酒店”这个词语进行查询,首先进行手动分词我们看看结果
Elasticsearch(ES)中 term与match之间的区别_第2张图片
分词的结果如下图,很容易看出来“上海嘉定喜来登酒店” 这个词语进行了分词没有 上海嘉定喜来登酒店这个字段
Elasticsearch(ES)中 term与match之间的区别_第3张图片
如果采用term进行全名的查找,看下图很容易看出来没找到
原因刚刚说了 term 不进行分词,直接找匹配的。我们知道上海嘉定喜来登酒店分词后 没有 上海嘉定喜来登酒店这组词语所以直接失败
Elasticsearch(ES)中 term与match之间的区别_第4张图片
如果采用match进行全名的查找,可以找到,但是混杂着很多200条,以为是模糊查找,进行了分词匹配
Elasticsearch(ES)中 term与match之间的区别_第5张图片

解决方案

我就想只查找 上海嘉定喜来登酒店
我暂时想到的方案 采用boolean查询配合一下
Elasticsearch(ES)中 term与match之间的区别_第6张图片
有后续方案及时更新,萌新在学只是记录一下知识点而已。

你可能感兴趣的:(微服务,elasticsearch,大数据,搜索引擎)