elasticsearch 常用搜索总结

news/2024/11/6 11:09:29/文章来源:https://www.cnblogs.com/xingzr/p/18529208

match_all

它不包含任何条件,通常用于返回索引中的所有文档

GET /index/_search
{"query":{"match_all":{}}
}

match

用于执行全文本搜索。它可以对文本字段进行模糊匹配,支持分词器处理后的词项匹配

GET /index/_search
{"query":{"match":{"field_name":{"query":"search words", // 搜索匹配词"operator":"or",        // 控制多个词项之间的逻辑关系。可选值为 or(默认)和 and  "analyzer": "standard", // 指定在查询时使用的分析器。如果未指定,默认使用字段的映射定义中的分析器。"minimum_should_match": "50%" // 控制匹配的最小词项数量。可以是绝对数量或百分比。}}}
}

match_phrase

用于执行短语匹配查询。与普通的 match 查询不同,match_phrase 查询要求匹配的词项必须按指定的顺序出现,并且中间不能有其他词项。这使得 match_phrase 查询非常适合用于精确匹配短语

GET /index/_search
{"query":{"match_phrase":{"field_name":{"query":"search words", // 搜索匹配词"analyzer": "standard", // 指定在查询时使用的分析器。如果未指定,默认使用字段的映射定义中的分析器。"slop": 1               // 控制允许的词项之间的间隔。默认值为 0,表示词项必须紧挨着出现 (注:索引和搜索项使用不同的分词器可能会产生不同的词项,导致无法匹配)}}}
}

multi_match

查询可以在多个字段中进行搜索,返回包含匹配内容的文档

GET /index/_search
{"query":{"multi_match": {"query": "search words",         // 搜索匹配词"fields": ["field1", "field2"],  // 要搜索的字段列表"type": "best_fields"            // 匹配类型 可选值包括 best_fields(默认)、most_fields、cross_fields 和 phrase}}}best_fields:  默认类型。尝试在单个字段中找到最佳匹配。如果某个字段中的匹配度最高,则该字段的得分会被用作最终得分
most_fields:  尝试在多个字段中找到匹配,并将所有匹配字段的得分相加
cross_fields: 将所有字段视为一个整体进行匹配。适合字段之间有相似内容的情况
phrase:       要求匹配的词项按顺序出现,形成一个短语

term

用于精确查询,不进行分词处理,而是直接匹配字段中的完整值(包括大小写和空格)适用于 keyword 类型的字段

GET /index/_search
{"query":{"term": {"field_name": {"value":"search words" // 搜索匹配词}}}
}

注:

  1. 如果 term 匹配的字段为 text 类型,可以使用field_name.keyword 进行搜索
  2. term 处理多值字段(数组)时,查询是包含不是等于

terms

主要用于多值精确匹配,terms 查询在需要查找包含多个特定值的文档时非常有用,常用于过滤和聚合操作

GET /index/_search
{"query":{"terms": {"field_name": ["search word1","search word2"], // 多个搜索匹配词"minimum_should_match": 2                     // 指定至少需要匹配的值的数量或比例}}
}

terms_set

用于处理多值字段(如数组字段),并允许你根据字段中值的数量来动态地应用查询条件

GET /index/_search
{"query": {"terms_set": {"field_name": {"terms": [ "value1", "value2", ... ],"minimum_should_match": 1,                               // 固定的最小匹配值 整数或字符串(百分比)"minimum_should_match_field": "min_match_field",         // 指定一个字段,该字段的值将用作 minimum_should_match 的阈值"minimum_should_match_script": {"source": "params.num_terms * params.percent / 100"    // 使用脚本来动态计算 minimum_should_match 的值  params.num_terms: terms 列表中的值数量  params.percent: 可以在脚本中使用的百分比值}}}}
}

range

用于查找在指定范围内的文档的查询类型。它可以用于数值、日期、字符串等多种数据类型的字段

GET /index/_search
{"query":{"range": {"field_name":{"gte": 10,"lte": 20}}}
}

exists

查找包含特定字段的文档的查询类型。它不关心字段的具体值,只检查字段是否存在

GET /index/_search
{"query":{"exists": {"field":"field"}}
}

fuzzy

用于执行模糊搜索的查询类型。它允许用户在搜索时容忍一定的拼写错误,从而找到与查询词相似的文档

GET /index/_search
{"query":{"fuzzy": {"field_name":"search words"}}
}

bool query 组合搜索

用于组合多个查询条件,以实现复杂的搜索逻辑

GET /index/_search
{"query": {"bool": {"must": [ /* 必须满足的所有查询条件 */ ],"should": [ /* 至少满足一个的查询条件 */ ], (minimum_should_match 指定 should 条件中至少需要满足的条件数量)"must_not": [ /* 必须不满足的所有查询条件 */ ],"filter": [ /* 过滤条件,不影响评分 */ ]}}
}

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

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

相关文章

Error:Kotlin: Module was compiled with an incompatible version of Kotlin.

idea 启动项目时报错 Error:Kotlin: Module was compiled with an incompatible version of Kotlin. The binary version of its metadata is 1.9.0, expected version is 1.1.16. 解决方案(windows): 1、打开Kotlin面板 路径:File -> settings -> Languages & F…

JavaScript用法

JavaScript 用法HTML 中的 Javascript 脚本代码必须位于 <script> 与 </script> 标签之间。 Javascript 脚本代码可被放置在 HTML 页面的 <body> 和 <head> 部分中。<script> 标签 如需在 HTML 页面中插入 JavaScript,请使用 <script> 标…

在vite里面,使用linaria,css样式名混淆的问题

我们项目使用css in js来实现样式,借用了一个插件linaria。但是有一个问题,就是样式名会被混淆如下解决方法是,vite配置里面加一个 就可以了,结果如下

刚毕业,去做边缘业务,还有救吗?

有一些同时拿到了多个 Offer 的同学,会纠结于如何选择。其中有一些比较共性的问题,比如 “刚毕业,去做边缘业务,会不会影响后面的人生呢?”大家好,我是程序员鱼皮。今年的秋招已经接近尾声,我陆续收到了很多小伙伴们的 Offer 报喜。有一些同时拿到了多个 Offer 的同学,…

符合ISO26262的零部件级的软件测试解决方案

引言在功能安全的开发、测试过程中概念阶段的活动一般都是由主机厂负责,而从系统开发到单元实现则是由供应商负责,对于供应商所做的一系列测试通常称为零部件级测试。根据ISO 26262功能安全标准的划分,功能安全在零部件阶段的测试包括:软件单元测试、软件集成测试、硬件集成…

惊呆:where 1=1 可能严重影响性能,差了10多倍,快去排查你的 sql

文章很长,且持续更新,建议收藏起来,慢慢读!疯狂创客圈总目录 博客园版 为您奉上珍贵的学习资源 : 免费赠送 :《尼恩Java面试宝典》 持续更新+ 史上最全 + 面试必备 2000页+ 面试必备 + 大厂必备 +涨薪必备 免费赠送 :《尼恩技术圣经+高并发系列PDF》 ,帮你 实现技术自由,…

鸿蒙项目实战(二):实现动态栅格布局

需求: 动态设置栅格布局子元素实现如下: 一、定义一个类,定义所有的子元素数据// 首页业务按钮可选项集合 export class HomeBussinessConfig{// 供选择的所有tab集合// 只读 静态static readonly buttons = [{title:功能一,icon:$r(app.media.icon_home_sale),},{title:功能…

Dynaseal-面向未来端侧llm agent的llm api key分发机制

为什么要有这个项目 试想一下,在未来 llm agent 在端侧全面铺开,但是目前调用大模型的方式通过了是一个拿到了就可以随便使用的 api-key?那用户岂不是从端侧的模型拿到了 api-key 就可以刷爆你的账单?!!!如果每个人的手机都跑着几个 agent,你还有一堆用户,那你服务器岂…

使用SeaTunnel从InfluxDB同步数据到Doris

本文介绍了如何使用SeaTunnel将数据从InfluxDB同步到Doris。通过SeaTunnel强大的数据集成功能,用户可以高效地将存储于InfluxDB中的时间序列数据传输至Doris,便于数据的访问与分析。版本信息: SeaTunnel 2.3.3 InfluxDB 2.7.6 Doris 2.1.3 rc09准备事项 SeaTunnel2.3.3的安装…

CMU_15445_P2_Extendible_Hash_Table

到Project2, 我们依然在处理数据库存储相关的部分, 从 Project1 中我们应该Get到两个概念:数据库底层数据操作的基本单元是 Page. buffer_pool_manager 是管理以及组织数据单元Page的工具, 在Project2的第一部分, 我们还新增了页面守护(PageGuard)的机制更加优雅的获取以及释放…

关于pacman更新时出现error: GPGME error: No data 解决方法

问题复现 基本上我隔一段时间就会出现这个问题,每一次都是在网络上寻找相关命令来解决,但是却不明白为什么会出现这个问题。 问题大概是这样的但是有一位博主详细的帮忙解答了问题,大概的意思是指:pacman 在更新数据库文件时会尝试下载每个仓库的 .db.sig 文件,这是数据库…

Zabbix7.0教程:新增Browser监控项

1 前言 Zabbix 7.0.0版本之后,增加了“Browser”监控项类型,即浏览器监控,能够使用浏览器监控复杂的网站和web应用。 浏览器监控项允许执行用户定义的JavaScript代码来模拟与浏览器相关的操作,例如点击、输入文本、网页导航等。该监控项通过HTTP/HTTPS收集数据,并部分…