区别

match
全文搜索, 通常用于对text类型字段的查询,会对进行查询的文本先进行分词操作,如下图

term
精确查询,通常用于对keyword和有精确值的字段进行查询,不会对进行查询的文本进行分词操作,精确匹配,如下图

实例说明

  1. 新建索引
  2. 添加数据
  3. 测试分词效果
  4. 测试match查询
  5. 测试term查询

新建索引
添加一个text类型的字段,使用ik_max_word分析器

PUT /testquery
{"mappings": {"books":{"properties": { "bookName":{"type":"text","analyzer": "ik_max_word"}}}}
}

添加数据

POST /testquery/books
{"bookName":"Java编程思想"
}

测试分词效果

GET /_analyze
{"analyzer": "ik_max_word","text": ["Java编程思想"]
}

结果

{"tokens": [{"token": "java","start_offset": 0,"end_offset": 4,"type": "ENGLISH","position": 0},{"token": "编程","start_offset": 4,"end_offset": 6,"type": "CN_WORD","position": 1},{"token": "思想","start_offset": 6,"end_offset": 8,"type": "CN_WORD","position": 2}]
}

所以,Java编程思想 实际分词效果如下

测试match查询,进行分词操作
查询 Java

先看看 Java 的分词效果

GET /_analyze
{"analyzer": "ik_max_word","text": ["Java"]
}
{"tokens": [{"token": "java","start_offset": 0,"end_offset": 4,"type": "ENGLISH","position": 0}]
}

存在, 所以是可以查询到的

POST /testquery/books/_search
{"query": {"match": {"bookName": "Java"}}
}
{"took": 60,"timed_out": false,"_shards": {"total": 5,"successful": 5,"skipped": 0,"failed": 0},"hits": {"total": 1,"max_score": 0.2876821,"hits": [{"_index": "testquery","_type": "books","_id": "vYOz-msB_TzP5bFY5JlL","_score": 0.2876821,"_source": {"bookName": "Java编程思想"}}]}
}

查询 Java思想
查看分词效果

GET /_analyze
{"analyzer": "ik_max_word","text": ["Java思想"]
}
{"tokens": [{"token": "java","start_offset": 0,"end_offset": 4,"type": "ENGLISH","position": 0},{"token": "思想","start_offset": 4,"end_offset": 6,"type": "CN_WORD","position": 1}]
}

存在, 所以也是可以查询到的

POST /testquery/books/_search
{"query": {"match": {"bookName": "Java思想"}}
}
{"took": 2,"timed_out": false,"_shards": {"total": 5,"successful": 5,"skipped": 0,"failed": 0},"hits": {"total": 1,"max_score": 0.5753642,"hits": [{"_index": "testquery","_type": "books","_id": "vYOz-msB_TzP5bFY5JlL","_score": 0.5753642,"_source": {"bookName": "Java编程思想"}}]}
}

测试term查询, 不进行分词操作
查询 java
查看上面的分词结果, java是在分词结果中的,所以可以查询到

POST /testquery/books/_search
{"query": {"term": {"bookName": "java"}}
}
{"took": 7,"timed_out": false,"_shards": {"total": 5,"successful": 5,"skipped": 0,"failed": 0},"hits": {"total": 1,"max_score": 0.2876821,"hits": [{"_index": "testquery","_type": "books","_id": "vYOz-msB_TzP5bFY5JlL","_score": 0.2876821,"_source": {"bookName": "Java编程思想"}}]}
}

查询 Java
Java不在上面的分词结果中, 结果当然就查询不到

POST /testquery/books/_search
{"query": {"term": {"bookName": "Java"}}
}
{"took": 0,"timed_out": false,"_shards": {"total": 5,"successful": 5,"skipped": 0,"failed": 0},"hits": {"total": 0,"max_score": null,"hits": []}
}

Elasticsearch match和term查询的区别相关推荐

  1. Elasticsearch中的Term查询和全文查询

    Elasticsearch中的Term查询和全文查询 前言 Term 查询 exists 查询 fuzzy 查询 ids 查询 prefix 查询 range 查询 regexp 查询 term 查询 ...

  2. 【Elasticsearch】将 term查询的 integer 字段改成 keyword之后, must 再改成 filter,就造成query_cache剧降

    本文为博主九师兄(QQ:541711153 欢迎来探讨技术)原创文章,未经允许博主不允许转载. 文章目录 1.概述 1.概述 请问一下,为什么 elasticsearch 不生成缓存?常见的原因有哪些 ...

  3. 【Elasticsearch教程3】查询文档 term terms terms_set

    版本约定 本系列博客ES版本如下: Elasticsearch 7.17.X Spring Data Elasticsearch 4.4.X Elasticsearch下载地址 Spring Data ...

  4. Elasticsearch教程(28) text和keyword区别 term和match区别 ik中文分词器使用

    text和keyword区别 term和match区别 ik中文分词器使用 一.前言 二.之前相关的博客 三.造点测试数据 1. 创建一个index 2. 插入测试数据 四.做一份试卷 第1题:tit ...

  5. elasticsearch 查询(match和term)

    elasticsearch 查询(match和term) es中的查询请求有两种方式,一种是简易版的查询,另外一种是使用JSON完整的请求体,叫做结构化查询(DSL). 由于DSL查询更为直观也更为简 ...

  6. elasticsearch match模糊查询

    elasticsearch 中term与match区别 elasticsearch 中term与match区别 term是精确查询 match是模糊查询 term查询 term是代表完全匹配,也就是精 ...

  7. Elasticsearch实战(五)---高级搜索 Match/Match_phrase/Term/Must/should 组合使用

    Elasticsearch实战-Match/Match_phrase/term/filter 及Must should 组合并列使用 文章目录 Elasticsearch实战-Match/Match_ ...

  8. 初识ElasticSearch(2) -文档查询之match查询 | 分词器

    1. 分词器: 2. match查询: 2.1. 数据准备 - 创建带分词器的索引映射 2.2. 数据准备 - 添加文档 2.3. 数据准备 - 查看文本分词 2.4. 查询 - 映射有分词器的字段查 ...

  9. 为什么 elasticsearch 要避免使用term查询text类型的字段

    文章目录 term 查询 参数 value boost 避免使用term查询text类型的字段 1.创建一个含有text类型字段full_text 2.索引一个文档 3.在full_text字段使用t ...

最新文章

  1. centos 部署spring boot应用
  2. php curl 采集文件,curl获取远程文件内容
  3. 16999元!华为Mate X 5G折叠屏手机正式发布:不愧是限量款
  4. python代码错误有哪些_在编写python代码时,小白最容易犯的十几个错误 !
  5. Unity3D之UGUI基础9:ScrollRect卷动区域
  6. 掌握好数据分析,99%的企业都不会拒绝你
  7. 申万一级行业日指数_2017年申万一级行业分类表
  8. db9针232接口波特率标准_RS-232串口使用的DB9螺钉,螺纹规格是什么?
  9. 传奇gom引擎架设教程
  10. Hive处理数据基本操作流程
  11. office for Mac 2016/2019 百度云分享
  12. sqlite3数据库损坏修复方法(windows下)
  13. MLE的数值确定:Newton-Raphson迭代法、得分法
  14. 记录Access deined: authorize failure的坑
  15. xp计算机远程桌面设置密码,远程桌面连接设置,详细教您xp怎么设置远程桌面连接...
  16. 社交APP经典死法18种,听野路子产品菜狗怎么说
  17. 【C语言】实现双人控制的战斗小游戏
  18. 淘宝天猫京东拼多多抖音苏宁1688等平台关键词监控价格API接口(店铺商品价格监控API接口调用展示)
  19. 【深度好文】强烈推荐:傅盛认知三部曲!
  20. 计算机网络隧道工程,隧道工程

热门文章

  1. 爬虫下载壁纸,并设置壁纸自动切换
  2. C# SqlTransaction 多个方法采用同一个事务,保证操作统一性,数据一致性
  3. 【GDAL】矢量栅格化函数-gdal_rasterize
  4. Html Select 使用selected属性设置默认选择项
  5. apex服务器不稳定,APEX英雄提高帧数稳定144修改方法
  6. CEO之许可证---------------经营性互联网,自营和ICP的关系.
  7. Windows环境部署PbootCMS企业网站管理系统
  8. js运用return返回值进行求银行卡余额
  9. 水果(数据结构与算法)(python)
  10. nvidia实时刷新