ElasticSearch - term 和 match 的差别
https://blog.csdn.net/weixin_40341116/article/details/80745565
阅读本文前要先知道 分词、倒排索引 的概念,并需要知道 text, keyword 在 ES 5.x 以上的差别 (ES基本类型与映射)
term 和 match牵扯到了分词器、mapping、倒排索引等
term 是直接把field拿去查询倒排索引中确切的term
match 会先对field进行分词操作,然后再去倒排索引中查询
具体实例
假设有一个字段nickname,存放的类型是text,因此当新增一笔文档时,内容会被分词器分词,然后才储存进倒排索引
假设插入了一笔文档,其中"nickname": "1 hello",分词过后变为1、hello,因此倒排索引中储存的是两笔索引1和hello,而不是一笔索引1 hello
使用match做查询
"match": "1-hello" : 成功,因为match把1-hello分词成 1、hello,而1和hello都存在在倒排索引中,所以不只能够查到,_score还很高
"match": "1" : 成功,1被分词过后还是1,而1存在在倒排索引中
"match": "hello how r u" : 成功,match把hello how r u分词成hello、how、r、u,而hello存在在倒排索引中
使用term做查询
"term": "2222-hello : 失败,倒排索引只有1、hello,并没有2222-hello
"term": "hello" : 成功,因为倒排索引中有hello
"term": "1 hello" : 失败,虽然1 hello和我们当时插入的数据一模一样,但是因为倒排索引在建立索引时把原始的数据分词了才储存进索引,裡面存的是1和hello,并没有存放1 hello,因此查询失败
ElasticSearch - term 和 match 的差别相关推荐
- ElasticSearch term和match查询机制解析和隐藏的查询问题
2. 关于默认分析使用term查询的问题 之前说过es的默认分析器会讲中文拆分成一个个的单个汉子,搜索条件"内科"会被分析为"内"和"科", ...
- elasticsearch 查询(match和term)
elasticsearch 查询(match和term) es中的查询请求有两种方式,一种是简易版的查询,另外一种是使用JSON完整的请求体,叫做结构化查询(DSL). 由于DSL查询更为直观也更为简 ...
- elasticsearch中term与match
分词器.字符串类型.倒排索引 在说term和match之前,需要先了解一下这三个概念 分词器 es默认的分词器是standard analyzer,该分词器的特点是:将所有英文字符串的大写字母转换成小 ...
- 【Elasticsearch教程18】Mapping字段类型之text 以及term、match和analyzer
Elasticsearch Mapping字段类型之text 以及term.match和analyzer 一.text场景 二.`term`查询 三.`match`查询 1. `亚瑟王`如何存储? 2 ...
- Elasticsearch教程(28) text和keyword区别 term和match区别 ik中文分词器使用
text和keyword区别 term和match区别 ik中文分词器使用 一.前言 二.之前相关的博客 三.造点测试数据 1. 创建一个index 2. 插入测试数据 四.做一份试卷 第1题:tit ...
- 关于es查询dsl的filter与must,term与match的区别
[1]创建es7 索引 put localhost:9200/pdi_cust , 注意 PUB_CUST_LABEL 字段分词了. es7 不支持type ,所以 无需指定type. { &quo ...
- Elasticsearch term vector
Elasticsearch term vector 一. 概念 二. term vector数据的出现时机 三. 数据探查 3.1 最基本的数据探查 3.2 探查指定term的term vector ...
- es笔记三之term,match,match_phrase 等查询方法介绍
首先介绍一下在 es 里有两种存储字符串的字段类型,一个是 keyword,一个是 text. keyword 在存储数据的时候是作为一个整体存储的,不会对其进行分词处理 text 存储数据的时候会对 ...
- elasticsearch term match multi_match区别
转自:http://www.cnblogs.com/yjf512/p/4897294.html match 最简单的一个match例子: 查询和"我的宝马多少马力"这个查询语句匹配 ...
- elasticsearch7常见查询(term、match、bool、filter)
一.精准查询term term是代表完全匹配,即不进行分词器分析,文档中必须包含整个搜索的词汇 1.term单值 字段只有一个值时候,用term关键词查询 查询biz_id值为190919002390 ...
最新文章
- 第十、十一周项目三-警察和厨师(1)
- Memcache 安装与使用
- SQL 语句快速参考
- 使用Go语言从零编写PoS区块链
- bdphp在线订购是真的么_《瑞评》330i会是宝马粉最后的希望么?
- 搭建MyBatis操作数据库
- mAP与IOU的简单介绍
- 渗透中Poc、Exp、Payload、Rce与Shellcode的区别
- 【本周六,上海】2021年的首场openGauss Meetup,有干货有礼品,只等你来!
- Tip3 百度网盘PC版去除广告和游戏运营位教程(百度网盘破解教程)
- [Python]更改图片底色
- 【Paper Reading】Improving Availability of Vertical Federated Learning Relaxing Inference on Non-overl
- 用python画一个机器猫歌词_用Python语言模型和LSTM做一个Drake饶舌歌词生成器
- python指纹识别_Python实现指纹识别你见过没?
- 理解gamma校正[译]
- 相机快门_向我的智能手机添加远程相机快门的最简单方法是什么?
- 2020.10.24--AI--波纹便签、字体设计、徽章制作
- 465端口发邮件php,在centos上打开端口465 for smtp的问题
- matlab做二元garch m,多元garch模型的matlab程序如何运行?能否举例说明下啊,希望高手指点...
- 一步一步学Spring Boot(三)