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]两条数据都会被找到。

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

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

相关文章

二叉树的详解

二叉树 【本节目标】 掌握树的基本概念掌握二叉树概念及特性掌握二叉树的基本操作完成二叉树相关的面试题练习 树型结构&#xff08;了解&#xff09; 概念 树是一种非线性的数据结构&#xff0c;它是由n&#xff08;n>0&#xff09;个有限结点组成一个具有层次关系的集合。…

MySQL深入——18

我们来看看一主多从的情况 比如A是主库&#xff0c;A’ B C D都是副库&#xff0c;但A与A互为备库&#xff0c;当A库出现问题&#xff0c;我现在要将主库转到A’该怎么办。 以下是基于位点的主备切换 CHANGE MASTER TO MASTER_HOST$host_name MASTER_PORT$port MASTER_USER…

JS-本地文件上传

由于不需要原上传文件的样式&#xff0c;所以自己书写了一个按钮触发文件上传&#xff0c;并将原本的样式隐藏 <!doctype html> <html><head><meta charset"utf-8"><title>文件传输</title> </head><body><inpu…

工业笔记本丨行业三防笔记本丨亿道加固笔记本定制丨极端温度优势

工业笔记本是专为在恶劣环境条件下工作而设计的高度耐用的计算机设备。与传统消费者级笔记本电脑相比&#xff0c;工业笔记本在极端温度下展现出了许多优势。本文将探讨工业笔记本在极端温度环境中的表现&#xff0c;并介绍其优势。 耐高温性能: 工业笔记本具有更高的耐高温性…

QT 应用程序中集成浏览器

QT 应用程序中集成浏览器 前言 前言 在很多情况下&#xff0c;我们需要在应用程序中集成浏览器&#xff0c;比如应用程序界面是使用 H5 页面开发&#xff0c;或者我们的应用程序需要访问 Web 网站。 应用程序中集成浏览器&#xff0c;并不一定是需要一个具有地址栏、多标签等…

安卓动态链接库文件体积优化探索实践

背景介绍 应用安装包的体积影响着用户下载量、安装时长、用户磁盘占用量等多个方面&#xff0c;据Google Play统计&#xff0c;应用体积每增加6MB&#xff0c;安装的转化率将下降1%。 安装包的体积受诸多方面影响&#xff0c;针对dex、资源文件、so文件都有不同的优化策略&…

【极数系列】Flink集成KafkaSource 实时消费数据(10)

文章目录 01 引言02 连接器依赖2.1 kafka连接器依赖2.2 base基础依赖 03 连接器使用方法04 消息订阅4.1 主题订阅4.2 正则表达式订阅4.3 Partition 列分区订阅 05 消息解析06 起始消费位点07 有界 / 无界模式7.1 流式7.2 批式 08 其他属性8.1 KafkaSource 配置项&#xff08;1&…

【ASP.NET Core 基础知识】--Web API--Swagger文档生成

Swagger是一种用于设计、构建和文档化Web API的开源工具。它提供了一套标准化的规范&#xff0c;使得开发者能够清晰地定义API端点、参数、请求和响应。通过Swagger&#xff0c;用户可以生成具有交互式UI的实时API文档&#xff0c;便于团队协作和第三方开发者理解和使用API。它…

如何训练自己的模型

无论数据类型或目标如何&#xff0c;用于训练和使用 AutoML 模型的工作流都是相同的&#xff1a; 准备训练数据。 我们需要将需要训练的数据准备为jsonl格式&#xff0c;这种格式的特点就是每一行都是json的格式 {"prompt": "<prompt text>", "…

机器学习之DeepSequence软件使用学习2-helper模块学习

在学习1中粗略地运行了一下软件的例子文件&#xff0c;但其中的很多东西都未能理解。该文中主要是对helper模块中代码的初步注释及学习以求能够熟练使用该软件。 from __future__ import print_function #from __future__ import print_function只在Python 2中有意义。在Pytho…

java执行可执行文件

文章目录 概要使用Runtime.exec使用ProcessBuilder使用第三方工具包commons-exec.jar 概要 java执行bat或shell脚本的方式主要有三种方式 1、 使用Runtime.exec 2、 使用ProcessBuilder 3、 使用第三方的工具包commons-exec.jar 使用Runtime.exec 在 Java 中&#xff0c;使用…

【初识爬虫+requests模块】

爬虫又称网络蜘蛛、网络机器人。本质就是程序模拟人使用浏览器访问网站&#xff0c;并将需要的数据抓取下来。爬虫不仅能够使用在搜索引擎领域&#xff0c;在数据分析、商业领域都得到了大规模的应用。 URL 每一个URL指向一个资源&#xff0c;可以是一个html页面&#xff0c;一…

配置git环境与项目创建

项目设计 名称&#xff1a;KOB 项目包含的模块 PK模块&#xff1a;匹配界面&#xff08;微服务&#xff09;、实况直播界面&#xff08;WebSocket协议&#xff09; 对局列表模块&#xff1a;对局列表界面、对局录像界面 排行榜模块&#xff1a;Bot排行榜界面 用户中心模块&…

从Kafka系统中读取消息数据——消费

从Kafka系统中读取消息数据——消费 消费 Kafka 集群中的主题消息检查消费者是不是单线程主题如何自动获取分区和手动分配分区subscribe实现订阅&#xff08;自动获取分区&#xff09;assign&#xff08;手动分配分区&#xff09; 反序列化主题消息反序列化一个类.演示 Kafka 自…

软件测试学习笔记-使用jmeter进行性能测试

性能测试&#xff1a;使用自动化工具&#xff0c;模拟不同的场景&#xff0c;对软件各项性能指标进行测试和评估的过程。 性能测试的目的&#xff1a; 评估当前系统的能力寻找性能瓶颈&#xff0c;优化性能评估软件是否能够满足未来的需要 性能测试和功能测试对比 焦点不同&…

基于FPGA的图像最近邻插值算法verilog实现,包括tb测试文件和MATLAB辅助验证

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 将FPGA数据导入matlab显示图片&#xff0c;效果如下&#xff1a; 2.算法运行软件版本 vivado2019.2&#xff0c;matlab2022a 3.部分核心程序 ti…

【开源】SpringBoot框架开发高校学生管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 学生管理模块2.2 学院课程模块2.3 学生选课模块2.4 成绩管理模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 学生表3.2.2 学院课程表3.2.3 学生选课表3.2.4 学生成绩表 四、系统展示五、核心代码5.1 查询课程5.2 新…

开源软件:引领技术创新与商业模式转型

开源软件&#xff1a;引领技术创新与商业模式转型 随着信息技术的飞速发展&#xff0c;开源软件已然成为推动软件行业进步的重要力量。它不仅促进了技术的创新和应用&#xff0c;还催生了多样化的商业模式&#xff0c;深刻影响着全球软件生态系统的演变。 ### 开源软件与技术…

DQN的理论研究回顾

DQN的理论研究回顾 1. DQN简介 强化学习&#xff08;RL&#xff09;&#xff08;Reinforcement learning: An introduction, 2nd, Reinforcement Learning and Optimal Control&#xff09;一直是机器学习的一个重要领域&#xff0c;近几十年来获得了大量关注。RL 关注的是通…

服务器和CDN推荐

简介 陆云Roovps是一家成立于2021年的主机服务商&#xff0c;主要业务是销售美国服务器、香港服务器及国外湖北十堰高防服务器&#xff0c;还有相关CDN产品。&#xff08; 地址&#xff1a;roovps&#xff09; 一、相关产品