ElasticSearch查询语句用法
查询用法包括:match、match_phrase、multi_match、query_string、term
1.match
1.1 不同字段权重
如果需要为不同字段设置不同权重,可以考虑使用bool查询的should子句来组合多个match查询,并为每个match查询设置不同的权重
{"query": {"bool": {"should": [{"match": {"product_name": {"query": "apple","boost": 3}}},{"match": {"description": {"query": "apple","boost": 1}}}]}}
}
上面的查询将在product_name字段和description字段中搜索包含"apple"的文档,并为product_name字段设置权重为3,而为description字段设置权重为1。这样,在计算匹配得分时,product_name字段的匹配将比description字段的匹配更加重要,因为它的权重更高。
这种方式可以灵活地控制不同字段地权重,以满足不同的搜索需求。
2、match_phrase
match_phrase查询是ES中一种用于精确匹配短语的查询方式,可以确保查询字符串中的关键词按照给定的顺序在文档中连续出现。以下是match_phrase查询的用法:
2.1 简单用法
match_phrase查询可以直接指定一个字段和一个短语进行匹配。
GET grade2/_search
{"query": {"match_phrase": {"character": "谦虚 态度"}},"track_total_hits": true
}

上面的查询将在character字段中搜索包含短语"谦虚 态度"的文档。
2.2 可调节因子
match_phrase默认要求完全匹配上query的短语,完全匹配可能比较严,我们会希望有个可调节因子,少匹配一个也满足,那就需要用到slop
GET grade2/_search
{"query": {"match_phrase": {"character": {"query": "谦虚 赞扬","slop": 2}}},"track_total_hits": true
}

3、multi_match
multi_match查询是ES中一种用于在多个字段中搜索相同查询字符串的查询方式。它可以在多个字段之间执行相同的查询,并且可以指定不同字段之间的权重(boost),从而影响匹配的相对重要性。
3.1 简单用法
multi_match查询可以直接指定一个查询字符串,然后在多个字段中进行搜索,其中一个字段有这个字符串就满足。
GET grade2/_search
{"query": {"multi_match": {"query": "张一","fields": ["name", "character"]}},"track_total_hits": true
}

上面的查询将在name和character字段中搜索包含"张一"的文档。
3.2 类型匹配
multi_match查询可以通过type参数指定匹配的类型,如 "best_fields"、 "most_fields"、 "cross_fields"、 "phrase"、 "phrase_prefix" 等。不同的类型在匹配方式和结果计算上有所不同。
GET grade2/_search
{"query": {"multi_match": {"query": "张一","fields": ["name", "character"],"type": "best_fields"}}
}
上面的查询将使用 "best_fields" 类型在 name 和 character字段中搜索包含短语 "张一" 的文档。
(1)best_fields:我们希望完全匹配的文档占的评分比较高,multi_match默认是best_fields
{"query": {"multi_match": {"query": "王阳明","fields": ["title","yearAlias"],"minimum_should_match": "70%"}}
}
(2)most_fields:我们希望越多字段匹配的文档评分越高
{"query": {"multi_match": {"query": "王阳明","type": "most_fields","fields": ["title","keywords"]}}
}
(3)cross_fields:我们希望这个词条词汇是分配到不同字段中的
{"query": {"multi_match": {"query": "王阳明","fields": ["title","keywords"],"type": "cross_fields"}},"highlight": {"fields": {"title": {"pre_tags": ["<a>" ],"post_tags": [ "</a>"]},"keywords": {"pre_tags": ["<b>" ],"post_tags": ["</b>" ]}}}
}
4、query_string
在ES中,query_string是一种查询方式,用于在文本字段上执行灵活且强大的搜索操作。query_string查询支持使用Lucene查询语法进行高级搜索,可以通过在查询字符串中指定不同的搜索条件、操作符和逻辑关系来构建复杂的搜索查询。
4.1 简单的关键词匹配
GET grade2/_search
{"query": {"query_string": {"default_field": "character","query": "乐观"}},"track_total_hits": true
}
上面的查询将在character字段中搜索包含关键词"乐观"的文档。
4.2 使用逻辑关系和操作符进行组合查询
GET grade2/_search
{"query": {"query_string": {"default_field": "character","query": "乐观 OR (赞扬 AND 优越)"}},"track_total_hits": true
}

上面的查询将在character字段中搜索包含关键词"乐观"或者 "赞扬 和 优越"的文档。
GET grade2/_search
{"query": {"query_string": {"default_field": "character","query": "乐观 OR (name:刘一 AND age:25 AND 优越)"}},"track_total_hits": true
}
上面的查询将在character字段中搜索包含关键词"乐观"或者name字段为"刘一"且age字段为"25"且character字段为"优雅"的文档。
4.3 模糊搜索和通配符搜索
GET account_info/_search
{"query": {"query_string": {"default_field": "email","query": "qq?com~"}}
}
GET account_info/_search
{"query": {"query_string": {"default_field": "email","query": "qqcom~"}}
}

上面的查询都可以在email中搜索类似于"qq?com"的词,其中"?"表示单个字符的通配符,"~"表示模糊搜索,"*"表示多个字符的通配符。
GET account_info/_search
{"query": {"query_string": {"default_field": "email","query": "qqcom~","fuzziness": 1}}
}

可以指定模糊搜索的最大编辑距离。上面的查询将在文档中搜索与"qqcom~"关键词的拼写相似且最大编辑距离为1的文档。
4.4 指定搜索字段和搜索条件
GET grade2/_search
{"query": {"query_string": {"fields": ["name", "age"],"default_operator": "AND", "query": "name:刘一, age:26"}},"track_total_hits": true
}

GET grade2/_search
{"query": {"query_string": {"fields": ["name", "age"],"default_operator": "AND", "query": "name:刘一 AND age:[25 TO 26]"}},"track_total_hits": true
}

上面的查询将在 name 和 age 字段中搜索包含关键词 "刘一" 并且年龄在 25 到 26 之间的文档,其中 fields 参数用于指定搜索字段,default_operator 参数用于指定默认的逻辑操作符。
需要注意的是,query_string 查询可能存在安全风险,因为它允许直接执行用户输入的查询字符串,可能导致潜在的搜索注入攻击,因此在使用时需谨慎验证和过滤用户输入,以防止安全漏洞。同时,根据实际需求和场景,可以根据 Elasticsearch 的文档和查询语法进行更多的配置和优化。
5、term精确值查找
{"query": {"term": {"title": "王阳明"}}
}
完全匹配,不进行分词词分析,文档中必须包含整个搜索的词汇。
但是term和terms是 必须包含(must contain) 操作,而不是必须精确相等(must equal exactly)。比如当查询"jack"时,[jack]和[jack,jone]两条数据都会被找到。
相关文章:
ElasticSearch查询语句用法
查询用法包括:match、match_phrase、multi_match、query_string、term 1.match 1.1 不同字段权重 如果需要为不同字段设置不同权重,可以考虑使用bool查询的should子句来组合多个match查询,并为每个match查询设置不同的权重 {"query&…...
美国服务器如何
美国服务器在被选择名单里排名很高,那么美国服务器如何,美国服务器 适用于哪些场景,认可度高吗?接下来小编为您整理发布美国服务器如何的详细情况。 美国服务器通常以其高性能、高可靠性和安全性而受到认可,它们适用于多种业务场…...
远程主机可能不符合glibc和libstdc++ VS Code服务器的先决条件
报错信息 VSCode无法连接远程服务器,终端一直提醒: [22:46:01.906] > Waiting for server log... [22:46:01.936] > Waiting for server log... [22:46:01.951] > [22:46:01.967] > Waiting for server log... [22:46:01.982] > [22:…...
【python基础】sys.argv[]的使用方法
文章目录 前言一、sys.argv是什么?二、实例 前言 本文主要讲解sys.argv[]的使用方法。 一、sys.argv是什么? sys.arg[]的作用就是存储在运行python脚本时候从外部往被运行的py文件里面传递的参数,是一个列表对象。利用好这个属性可以极大的增…...
Element-Ui el-date-picker日期传值异常问题解决办法
首先,只要非常简单的组件引入写法: 然后myDate在data()中是字符串类型 myDate: ‘’ 然后增加一个方法在提交表单到后台的时候,用来转化日期对应到myDate成字符串类型,并且对应到java类 function checkType(value) {if (typeo…...
GO语言集成开发 JetBrains GoLand 2023 中文
JetBrains GoLand 2023是一款专为Go语言开发者打造的集成开发环境(IDE)。它基于IntelliJ IDEA平台,提供了丰富的功能和工具,旨在提高开发效率和质量。GoLand 2023具备强大的Go语言支持,包括语法高亮、自动补全、代码提…...
详细关于如何解决mfc140.dll丢失的步骤,有效修复mfc140.dll文件丢失的问题。
mfc140.dll文件是Microsoft Visual Studio 2015程序集之一,它包含用于支持多种功能的代码和库。当这个mfc140.dll文件丢失时,可能会导致相关程序运行出错甚至无法运行。很多用户可能会遇到mfc140.dll丢失的问题,但是这并不是不可解决的困难。…...
聚簇索引、非聚簇索引、回表、索引下推、覆盖索引
聚簇索引(主键索引) 非叶子节点上存储的是索引值,叶子节点上存储的是整行记录。 非聚簇索引(非主键索引、二级索引) 非叶子节点上存储的都是索引值,叶子节点上存储的是主键的值。非聚簇索引需要回表&…...
ES实战-book笔记1
#索引一个文档,-XPUT手动创建索引, curl -XPUT localhost:9200/get-together/_doc/1?pretty -H Content-Type: application/json -d {"name": "Elasticsearch Denver","organizer": "Lee" } #返回结果 {"_index" : "g…...
高防服务器出租的优势及特点
高防服务器出租是指租用具备高防御能力的服务器,用于应对网络攻击、保护网站和数据安全。那么为什么会选择高防服务器出租,小编为您整理发布高防服务器出租的优势及特点。 高防服务器通常具备以下特点: 1. 高性能硬件配置:高防服务…...
NTLM||LM算法lsasswinlogon进程
来填坑了,这篇blog我们就来讲一下mimikatz能抓到开机的密码的原理 1.lsass&&winlogon 不知道大家有没有好奇过,我们每次开机输入密码之后,电脑又怎么知道我们是否输入正确呢? :这就要的得益于我们的两个进程…...
transformer剪枝论文汇总
文章目录 NN Pruning摘要实验 大模型剪枝LLM-PrunerSparseGPT LTPVTPWidth & Depth PruningPatch SlimmingDynamicViTSPViTDynamicBERTViT SlimmingFastFormersNViTUVCPost-training pruning NN Pruning 《Block Pruning For Faster Transformers》 《为更快的transformer…...
使用 Ant Design 的 Upload 组件实现图片
文章目录 使用 Ant Design 的 Upload 组件实现图片Upload组件itemRender自定义上传列表项的渲染方式修改图片名上传图片上传链接中添加 Bearer Token 的请求头onPreview{handlePreview}上传成功后,如何隐藏上传列表 使用 Ant Design 的 Upload 组件实现图片 Upload…...
【知识图谱--第二讲知识图谱的表示】
知识图谱的表示 知识表示Knowledge Representation 知识表示方法知识图谱的符号表示基于图的知识表示与建模简单图建模-最简单的无向图有向标记图OWL与Ontology 知识图谱的向量表示 知识表示 Knowledge Representation 知识表示(KR)就是用易于计算机处…...
C语言---计算n的阶乘
阶乘的概念:一个正整数的阶乘(factorial)是所有小于及等于该数的正整数的积,且0的阶乘为1,自然数n的阶乘写作n! 。 任何大于等于1 的自然数n 阶乘表示方法: n!123…(n-1)n 或 n!n(n-1)! 0!1 …...
材料非线性Matlab有限元编程:初应力法与初应变法
导读:本文主要围绕材料非线性问题的有限元Matlab编程求解进行介绍,重点围绕牛顿-拉普森法(切线刚度法)、初应力法、初应变法等三种非线性迭代方法的算法原理展开讲解,最后利用Matlab对材料非线性问题有限元迭代求解算法进行实现,展示了实现求解的核心代码。这些内容都将收…...
QT+OSG/osgEarth编译之八十二:osgdb_obj+Qt编译(一套代码、一套框架,跨平台编译,版本:OSG-3.6.5插件库osgdb_obj)
文章目录 一、osgdb_obj介绍二、文件分析三、pro文件四、编译实践一、osgdb_obj介绍 OBJ格式是一种标准的3D模型文件格式,它以纯文本形式存储关于3D模型的信息。这种格式最初由Wavefront Technologies为其高级可视化系统开发,后来被广泛应用于3D软件之间的数据交换。OBJ格式…...
[office] excel求乘积的公式和方法 #媒体#笔记#经验分享
excel求乘积的公式和方法 本文首先给出两个常规的excel求乘积的链接,然后再例举了一个文字和数字在同一单元格里面的excel求乘积的公式写法。 excel求乘积的方法分为两种,第一种是直接用四则运算的*来求乘积,另外一种就是使用PRODUCT乘积函数…...
OpenEuler20.03LTS SP2 上安装 OpenGauss3.0.0 单机部署过程(二)
开始安装 OpenGauss 数据库 3.1.7 安装依赖包 (说明:如果可以联网,可以通过网络 yum 安装所需依赖包,既可以跳过本步骤。如果网络无法连通,请把本文档所在目录下的依赖包上传到服务器上,手工安装后,即无需通过网络进行 Yum 安装了): 上传:libaio-0.3.111-5.oe1.x8…...
从零开始手写mmo游戏从框架到爆炸(十)— 集成springboot-jpa与用户表
导航:从零开始手写mmo游戏从框架到爆炸(零)—— 导航-CSDN博客 集成springboot-jpa,不用mybatis框架一个是方便对接不同的数据源。第二个目前规划的游戏内容可能对数据库的依赖不是很大,jpa应该肯定能满足要求了…...
Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例
使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件,常用于在两个集合之间进行数据转移,如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model:绑定右侧列表的值&…...
FastAPI 教程:从入门到实践
FastAPI 是一个现代、快速(高性能)的 Web 框架,用于构建 API,支持 Python 3.6。它基于标准 Python 类型提示,易于学习且功能强大。以下是一个完整的 FastAPI 入门教程,涵盖从环境搭建到创建并运行一个简单的…...
django filter 统计数量 按属性去重
在Django中,如果你想要根据某个属性对查询集进行去重并统计数量,你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求: 方法1:使用annotate()和Count 假设你有一个模型Item,并且你想…...
多种风格导航菜单 HTML 实现(附源码)
下面我将为您展示 6 种不同风格的导航菜单实现,每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...
css3笔记 (1) 自用
outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size:0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格ÿ…...
【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分
一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计,提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合:各模块职责清晰,便于独立开发…...
鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南
1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发,使用DevEco Studio作为开发工具,采用Java语言实现,包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...
以光量子为例,详解量子获取方式
光量子技术获取量子比特可在室温下进行。该方式有望通过与名为硅光子学(silicon photonics)的光波导(optical waveguide)芯片制造技术和光纤等光通信技术相结合来实现量子计算机。量子力学中,光既是波又是粒子。光子本…...
代码随想录刷题day30
1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币,另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...
Go 语言并发编程基础:无缓冲与有缓冲通道
在上一章节中,我们了解了 Channel 的基本用法。本章将重点分析 Go 中通道的两种类型 —— 无缓冲通道与有缓冲通道,它们在并发编程中各具特点和应用场景。 一、通道的基本分类 类型定义形式特点无缓冲通道make(chan T)发送和接收都必须准备好࿰…...
