news 2026/9/2 21:50:42

Elasticsearch 查询入门:像查字典一样简单

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Elasticsearch 查询入门:像查字典一样简单

👋 你好,未来的 ES 查询高手!

你是否觉得 Elasticsearch (ES) 的查询语句复杂得像天书?别担心,这篇文章就是你的“傻瓜书”。我们将抛开具象的概念,直接上手最核心、最常用的查询方法,让你在几分钟内就能像查字典一样轻松地从 ES 中检索数据。

想象一下,ES 就是一个超级智能的图书馆管理员,而你的任务就是告诉他你要找什么样的书。你的“查询语句”就是你告诉他的指令。


🛠️ 我们的“菜谱”:基本查询结构

所有 ES 查询都遵循一个基本的 JSON 结构。我们通常通过 REST API 的_search端点来发送查询请求。

# 使用 curl 命令的格式GET /你的索引名称/_search{"query":{"你的查询类型":{"你的字段":"你的值"}}}

别怕,我们马上用例子来填充这个“菜谱”。


🔍 核心查询类型:你的“查询工具箱”

1. 匹配查询 (match) - 最常用的“全文搜索”

这是你最常用的工具,用于搜索文本内容。它会对查询字符串进行分词,然后去匹配字段。

场景: 在一个“文章”索引中,查找内容包含“elasticsearch”的文章。

GET/articles/_search{"query":{"match":{"content":"elasticsearch"}}}
  • match: 查询类型。
  • content: 你要搜索的字段名。
  • "elasticsearch": 你要搜索的值。

小技巧: 你可以搜索一个短语,用match_phrase

GET/articles/_search{"query":{"match_phrase":{"content":"elasticsearch query"}}}
2. 词条查询 (term) - 精确匹配的“利器”

term查询用于精确匹配,它不会对你的查询词进行分词。非常适合匹配数字、日期、布尔值或者未经分词的关键词(如标签、状态码)。

场景: 在一个“商品”索引中,查找状态(status)为“上架”的商品。

GET/products/_search{"query":{"term":{"status":"上架"}}}

重要区别

  • match"elastic search",可能会拆成"elastic""search"两个词去匹配。
  • term"elastic search",它会严格寻找字段值完全等于"elastic search"这个字符串的文档。
3. 布尔查询 (bool) - 组合你的“搜索条件”

这是最强大的工具之一,它允许你将多个查询条件组合起来,实现逻辑与(AND)、或(OR)、非(NOT)

它包含四个子句:

  • must必须匹配所有条件(AND)。贡献算分。
  • should应该匹配条件(OR)。贡献算分。
  • must_not必须不匹配条件(NOT)。不贡献算分。
  • filter必须匹配条件(AND)。但不贡献算分,且会被缓存,性能更高。非常适合精确匹配。

场景: 查找“电子产品”类别中,价格低于1000元,且品牌不是“XX”的手机。

GET/products/_search{"query":{"bool":{"must":[// AND:必须满足以下所有条件{"match":{"category":"电子产品"}},{"match":{"name":"手机"}}],"filter":[// AND:且必须满足以下条件(性能高){"range":{"price":{"lt":1000}}}// range 查询用于范围:lt(小于), gt(大于), lte(小于等于)...],"must_not":[// NOT:必须不满足以下条件{"term":{"brand":"XX"}}]}}}

📊 结果排序与返回

查询结果默认按相关性得分(_score)排序。你可以用sort参数指定排序方式。

场景: 按价格从低到高排序,只返回前10条结果。

GET/products/_search{"query":{"match_all":{}// match_all: 匹配所有文档},"sort":[{"price":"asc"}// asc: 升序, desc: 降序],"size":10,// 返回前10条"from":0// 从第0条开始(分页)}

💡 总结与下一步

恭喜你!你已经掌握了 ES 查询的“三板斧”:

  1. match: 用于全文搜索。
  2. term: 用于精确匹配。
  3. bool: 用于组合复杂的查询逻辑。

你的入门实践路径

  1. 安装好 ES 和 Kibana(或使用 Elastic Cloud)。
  2. 在 Kibana 的Dev Tools中,照着上面的例子敲一遍。
  3. 尝试自己创建一些索引和文档,然后用不同的查询去检索它们。

ES 的查询世界非常广阔,还有range,exists,wildcard,fuzzy等众多查询类型等你探索。但掌握了今天这几个,你已经能解决 80% 的日常查询需求了!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/2 8:59:08

火山引擎:AI不再只是技术潜力,Agent成为下一个战场

作者:王聪彬 12月1日,豆包手机开启小批量发售,出乎意料的是,市场热度远超预期。 尽管尚未打通各类App的API,但豆包手机助手确实可以说完成了一次突破,通过AI模拟用户的点击、滑动等真实操作,直接…

作者头像 李华
网站建设 2026/9/2 22:04:51

2026年非结构化数据管理五大预测

各行业的企业正在存储比以往更多的数据。超过5拍字节(PB)已成为新常态,超过10 PB也越来越普遍。2026年非结构化数据管理的主题是"更多":更多数据、更多投资、更多痛点以及更多AI安全和风险担忧。非结构化数据的增长源于…

作者头像 李华
网站建设 2026/9/2 5:43:15

Google发布Gemini 3 Flash并将其设为默认模型

Google今天发布了基于上月推出的Gemini 3的快速且经济的Gemini 3 Flash模型,试图抢夺OpenAI的风头。该公司还将此模型设为Gemini应用和搜索AI模式中的默认模型。新的Flash模型在Google宣布Gemini 2.5 Flash模型六个月后到来,提供了显著改进。在基准测试中,Gemini 3 …

作者头像 李华
网站建设 2026/9/2 16:25:08

搞电机控制仿真最头疼的就是模型验证——参数调不准、算法跑飞、波形毛刺...今天给大伙儿整了套实用工具包,包含异步电机全家桶模型,直接解决从理论到落地的断层问题

推荐打包出一组异步电机、感应电机仿真模型,包括数学基础模型,无位置速度辨识模型,DTC 模型,FOC 模型等,模型总共有十多个,标价即总价。 模型已经运行过,在 2018b 版本上都没有问题,…

作者头像 李华
网站建设 2026/9/2 11:41:32

cesium126,230703,UE 建筑层移动和还原及其控制图层的实现 - 下:

(207)这里记录一下 UIBP 蓝图里,如何为按钮里的文本绑定文字,以前都是创建绑定函数,其实也可以直接绑定到本蓝图里的公共文本变量上 : 调用赋值,显示到屏幕 :因为没有老师的 smith 建…

作者头像 李华
网站建设 2026/9/2 14:38:04

【毕业设计】基于springboot+微信小程序的闲置物品处置平台的设计与实现(源码+文档+远程调试,全bao定制等)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华