es7.x Es常用核心知识快捷版2 各种查询

news2024/12/26 23:40:26

一 常用查询

1.1 term查询

term关键字查询,精确匹配,不会对查询条件进行分词。

 1.2 match查询

匹配查询,会将查询条件进行分词,然后进行查询,多个分词后查询的关系是or

elasticsearh中查询类型,term、match、match_all、multi_match、range、bool、boosting等_es match match_all_Leo Han的博客-CSDN博客

ElasticSearch 匹配查询(match、match_phrase)_鲨鱼辣椒1998的博客-CSDN博客

1.3 terms和term查询

1.3.1 term查询

term的查询是代表完全匹配,不会分词,类似于MySQL库的 where province = ?

1.3.2 terms查询

terms:是针对一个字段包含多个值时使用。

term类似于MySQL的 where province=?

terms类似于MySQL中的 where province in (?, ? ,?)

注意:term和terms只是说不会对关键字进行分词,并不是说只能用于keyword类型的字段查询。

如假设文档中有个字段是text类型,采用了ik分词器,name里面的值是【奋斗的时代】,通过ik分词器会分解成【奋斗,奋,斗,时代】但是如果你用该字段的term或者terms查询,输入的关键字是【奋斗的时代】,因为输入的关键字不会分词,反而查不到该记录,如果你输入的关键字是【奋斗】就是可以的。

 https://www.cnblogs.com/chengbao/p/14974148.html

1.4 match_phrase查询

1.match_phrase会被分词

2.被检索字段必须包含match_phrase中的所有词项并且顺序必须是相同的

3.被检索字段包含的match_phrase中的词项之间不能有其他词项

1.5 wildcardQuery

1.5.1 创建索引和搜索索引

WildcardQuery即通配符查询,即使用通配符来模糊查询。

wildcard 关键字: 通配符查询 

? 用来匹配一个任意字符

 * 用来匹配多个任意字符

GET /products/_search

{

  "query": {

    "wildcard": {

      "description": {

        "value": "iphon*"

      }

    }

  }

}

需要注意:

1.WildcardQuery对于用户输入的查询关键字是大小写敏感的请不要使用大写形式,因为索引中的Term都是小写形式的,

2.WildcardQuery查询是很慢的,因为它需要遍历很多的Term,为了避免极慢的查询速度,请不要使用以星号开头的通配符进行查询

3.在进行 wildcard 搜索的时候最好避免在检索词的开头使用*或者?,这会降低搜索性能。

Lucene5学习之WildcardQuery使用-WinFrom控件库|.net开源控件库|HZHControls官网

1.5.2 案例使用wildcard query

1.案例1: 搜索【01】

 

2.案例2:搜索【a】

 1.6 fuzzyQuery

1.6.1 fuzzyQuery查询

fuzzy查询是一种模糊查询,会根据检索词和检索字段的编辑距离(Levenshtein Distance)来判断是否匹配。一些信息有对的也有错误的,它会利用这些大概的信息,给我们匹配信息出来;

fuzzy查询是修正纠错模糊查询。

一个编辑距离就是对单词进行一个字符的修改。如下场景

修改一个字符,比如 box 到 fox

删除一个字符,比如 black 到 lack

插入一个字符,比如 sic 到 sick

交换两个相邻的字符的位置,比如 act 到 cat

在进行 fuzzy 搜索的时候,ES 会生成一系列的在特定编辑距离内的变形,然后返回这些变形的准确匹配。默认情况下,当检索词的长度在0..2 中间时,必须准确匹配;长度在3..5之间的时候,编辑距离最大为1;长度大于5的时候,最多允许编辑距离为2。

fuzzy关键字: 用来模糊查询含有指定关键字的文档

GET /products/_search

{

  "query": {

    "fuzzy": {

      "description": "iphooone"

    }

  }

}

注意: fuzzy 模糊查询 最大模糊错误 必须在0-2之间

搜索关键词长度为 2 不允许存在模糊

搜索关键词长度为3-5 允许一次模糊

搜索关键词长度大于5 允许最大2模糊

好玩的ES--第二篇之高级查询,索引原理和分词器_es高级查询_Binary Oracle的博客-CSDN博客

1.6.2 fuzzyQuery查询API的参数

fuzzy 查询会用到两个很重要的参数,fuzziness,prefix_length

1.fuzziness:表示输入的关键字通过几次操作可以转变成为ES库里面的对应field的字段

操作是指:新增一个字符,删除一个字符,修改一个字符,每次操作可以记做编辑距离为1

如【中文集团】到【中威集团】编辑距离就是1,只需要修改一个字符;

该参数默认值为0,即不开启模糊查询,精确匹配,

如果fuzziness值在这里设置成2,会把编辑距离为2的【东东集团】查询出来。

2.prefix_length:表示限制输入关键字和ES对应查询field的内容开头的第n个字符必须完全匹配,不允许错别字匹配

如这里等于1,则表示开头的中字必须匹配,不匹配则不返回,默认值也是0

加大prefix_length的值可以提高效率和准确率。

注意:这两个参数不是只适用于fuzzy查询,match查询一样适用。

如图截图:fuzzy查询:

1.6.3 同一字段即可全文检索又可精确匹配查询

针对含有两种类型的结构:既可以分词查询又可以不分词查询

基于这个映射你即可以在product字段上进行全文搜索, 也可以通过productName.keyword字段实现关键词搜索及数据聚合.

 

1.分词查询

2.不分词查询

想要不分词进行查询的时候,可以加上productName.keyword(字段名.keyword)进行查询,比如:

https://blog.csdn.net/sfh2018/article/details/118083634

https://www.cnblogs.com/lly001/p/11938953.html

1.7 query和filter的区别联系

Query查询字段会进行相关性_score计算;

filter仅仅是进行筛选。不计算相关性。

1.8 fuzzy和match查询的区别

使用fuzzy进行模糊查询时,value中的字段不会进行分词,而是作为一个整体进行匹配

使用match进行模糊查询时,value中的字段会被分词,分词后按照每个分词结果进行匹配

fuzzy是词/项级别的模糊匹配,match_phrase是基于短语级别的

https://www.cnblogs.com/lyc-code/p/15891806.html

https://blog.csdn.net/weixin_39929377/article/details/111808583

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/595010.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

golang 微服务中的断路器 hystrix 小案例

上次我们分享了 Hystrix 具体流程,作为断路器实现,我们如何将 hystrix 用在我们的项目代码中呢? 我们可以简单的将 hystrix-go 下载下来 go get github.com/afex/hystrix-go/hystrix 代码会放到我们的 GOPATH 中,的 pkg 下面&a…

用vue-full-calendar实现酒店预定管理展示

文章目录 前言一、关于vue-full-calendar二、使用步骤1. 引入库2. 使用库3. 开始编码4. 实际效果图展示5. 点击弹窗展示6. 弹窗展示效果图 总结 前言 近些天有位做酒店业务朋友问到我,有没有前端比较好用的预定日历查看插件,实际上我也没有研究过&#…

【板栗糖GIS】——如何良好的导出并批量管理kindle上的笔记

【板栗糖GIS】——如何良好的导出并批量管理kindle上的笔记 目录 1.将Kindle Mate安装到电脑上 2. 将kindle通过usb线连接到电脑。 3. 打开Kindle Mate软件,按F2自动导入笔记 4. 选择导出方式 5. 笔记修饰 1.将Kindle Mate安装到电脑上 下载地址:…

网络安全保姆级教程,别再说你学不会了

开始,在选择软件系统方面。很多人会纠结于是使用Linux还是Windows或者Mac系统。 虽然Linux系统看起来很酷,但对于新手来说并不是很友好。 同样,Windows系统也可以通过使用虚拟机装靶机进行学习。所以,直接用window,学…

【Windows安全】授权初探:访问控制基础及应用

▒ 目录 ▒ 🛫 导读需求开发环境 1️⃣ 常见名词及缩写汇总主体对象权限(规则) 2️⃣ 常见概念访问控制及安全级别访问令牌(Access tokens)特权 (Privilege) - 线程相关的安全描述符(Security Descriptors,SD)访问控制…

批判马斯洛需求层次模型

再次批判马斯洛需求层次模型,有啥缺陷? 趣讲大白话:文化不同,心理不同 【趣讲信息科技182期】 **************************** 每个民族的文化心理结构都不一样 常常低估文化对人的影响 有一门心理学分支,文化心理学 专…

(转载)免疫优化算法在物流配送中心选址中的应用(matlab实现)

12.1 理论基础 12.1.1 物流中心选址问题 随着世界经济的快速发展以及现代科学技术的进步,物流业作为国民经济的一个新兴服务部门,正在全球范围内迅速发展。物流业的发展给社会的生产和管理、人们的生活和就业乃至政府的职能以及社会的法律制度等都带来…

Vue前端压缩图片后上传,拍照上传最佳实践

文章目录 一、前言二、使用shrinkpng进行图片压缩2.1 安装依赖包2.2 引入包2.3 开始编码 总结 一、前言 最近有一个需求,通过手机拍照后上传图片到服务器,大家应该都知道,现在的手机像素实在是太高了,随便拍一张都是10M以上&…

移动应用架构同React Native、Flutter有什么关系?

移动应用架构描述了设计和构建应用的模式与技术。 该架构可以提供构建应用时应遵循的路线图和最佳实践,构建一个结构合理的应用。 移动应用的常见层次结构包括用户界面层、业务逻辑层、数据访问层,但是随着跨平台开发框架的不断发展,以React…

从TCP协议到TCP通信的各种异常现象和分析

很多人总觉得学习TCP/IP协议没什么用,觉得日常编程开发只需要知道socket接口怎么用就可以了。如果大家定位过线上问题就会知道,实际上并非如此。如果应用在局域网内,且设备一切正常的情况下可能确实如此,但如果一旦出现诸如中间交…

Zigbee Install code的使用和CRC的计算

Zigbee Install code的使用和CRC的计算 前言什么是Install codes?Zigbee install codes的格式CRC算法信息:python演示:Install Code的使用:烧录Install codes到Silicon labs EFR32设备中去安装代码文件格式烧录Install codes:核查…

【学习笔记】【万字长文】linux三剑客学习笔记

前言 ​ 上班以后用到的服务器大多数是centos的,很多命令会用一部分但稍微复杂一点的只能问度娘了。 ​ 时间长了,还是没积攒下什么本事,每次都需要百度查找。 ​ 终于有时间整理一篇关于linux三剑客的笔记,作为记录方便以后查…

项目经验分享:LVGL编程举例

本文介绍如何在成功移植LVGL的基础之上,编写自己的LVGL GUI程序。 文章目录 1. LVGL组件简介与LVGL仿真1.1 LVGL组件1.2 LVGL仿真 2. 代码结构3. 编程目标4. 编程前的准备5. LVGL编程基础5.1 简单示例代码5.2 设置组件位置5.3 图片的显示5.4 组件的事件响应5.5 设置…

【P46】JMeter 响应断言(Response Assertion)

文章目录 一、响应断言(Response Assertion) 参数说明二、准备工作三、测试计划设计3.1、包括3.2、匹配3.3、相等3.4、字符串3.5、字符串3.6、或者 一、响应断言(Response Assertion) 参数说明 可以对 Jmeter 取样器的响应消息进…

0x10 会话服务 DiagnosticSessionControl

0x10 会话服务 相当是一种分类,通过控制会话模式,使用不同的服务。应始终只有一个诊断会话在服务器中处于活动状态。 服务器应在启动时始终启动默认的诊断会话。 如果没有启动其他诊断会话,则只要服务器通电,默认诊断会话就应该运…

Hudi(五)集成Flink(3)

12、离线compaction MOR表的compaction默认是自动打开的,策略是5个commits执行一次压缩。因为压缩操作比较耗费内存,和写流程放在同一个pipeline,在数据量比较大的时候(10w/sqps),容易干扰写流程&#xff0…

LLM:LoRA: Low-Rank Adaptation of Large Language Models

随着模型规模的不断扩大,微调模型的所有参数(所谓full fine-tuning)的可行性变得越来越低。以GPT-3的175B参数为例,每增加一个新领域就需要完整微调一个新模型,代价和成本很高。 为解决微调大规模语言模型到不同领域和…

西南交通大学智能监测 培训课程练习3

2023.05.31培训 task1:MybatisPlus的使用 task2:SpringMVC常用接口开发 task3:JSON、接口测试 task4:SpringMVC拦截器与过滤器 目录 一、MybatisPlus 1.1DO类 1.2Mapper接口 1.3编写测试类测试 1.4Mybatis和MybatisPlus 二、…

Verilog学习笔记(串口RS232,基于野火教程)

目录 一、串口简介 二、设计与实现 串口数据回环顶层模块设计 串口接收模块uart_rx 串口发送模块uart_tx 顶层模块rs32_top 三、上板验证 一、串口简介 其中SPI和I2C为同步通信接口,双方时钟频率相同。而UART属于异步通信接口,没有统一时钟&…