news 2026/4/27 5:53:52

ElasticSearch关键概念教程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
ElasticSearch关键概念教程

ElasticSearch关键概念教程(更新中)

文章目录

  • ElasticSearch关键概念教程(更新中)
      • 应用场景
      • Index(待更新)
      • Mapping(待更新)
      • Document(待更新)

应用场景

这是一个专业的搜索引擎,请务必将其与MySQL等关系型数据库分开看待和了解。

如果要举一个例子让你对ES有一个清晰的认知,你可以参考百度、Google搜索引擎的搜索功能:

可以看到,当你搜索武汉科技大学这个关键字之后显示的结果,所有含有“武汉科技大学”的内容都被标红并展示给你了。

接下来是重点:

假设你写了一个模仿小红书的Web应用,你想提供一个搜索接口,通过获取到用户传给后端的关键词(例如:“武汉科技大学”)来搜索特定内容,按照普通开发者的想法,你也许会轻而易举地想到使用MySQL的LIKE去数据库中模糊匹配或者精确匹配。

但是,这样会出现一个严重的问题:效率低下——因为这必然导致你的查询语句会进行全表扫描——你不可能为每一列创建一个索引,更何况你还可能在文章内容中查询“武汉科技大学”这个关键字(更何况还要考虑查询短语/句子的情况),文章的内容是不可能作为索引供你查询,这样导致的结果必然就是逐条甚至于逐字逐句地去匹配你查询的内容。

当然,你也不要简单地就以为ES就是个查询关键字的数据库,它支持将你的查询文本进行拆分之后再查询,而不是简单地将你的查询文本作为一个整体去查询包含这个文本的数据,例如,当你搜索“武汉科技大学计算机学院”时,搜索引擎对你的查询文本进行了拆分(这个行为就被称作“分词”),变成了“武汉科技大学”、“计算机”、“学院”、“武汉科技大学计算机学院”等等不同的不可拆分且有意义的词句进行查询。

那么,ES是如何达到上述的效果的呢?

答案是:倒排索引。

首先,我们知道,MySQL数据存储是基于正向索引(即不破坏数据的整体性的前提下存入数据库)的,下面给一个例子:

idtitle
1武汉科技大学
2武汉大学
3华中科技大学

[1,武汉科技大学],[2,武汉大学] 等都是一个整体,我们暂且称呼其为“文档”,如果你要查询“大学”关键字,使用LIKE '%大学%'去每一个文档中模糊匹配,你只能遍历每一条数据中的每一条title的每一个字,如果满足条件,则放入结果集。

那么,什么是倒排索引呢?

上述正向索引我们可以看到是根据文档查找关键字,最后再确定这个文档是否包含你要查找的关键字,而倒排索引不一样,它是根据关键字直接查找到文档。

如何通过正向索引构建出倒排索引?可以看见,把所有文档中的“title”拿出来进行“分词”(即对句子/短语拆分为再也无法分割的关键字,也就是词条),然后将每个词条作为索引,构建出词条与文档的对应关系(即这个词条哪些文档中有)。

term(词条)id(文档id)
武汉1,2
科技1,3
大学1,2,3
华中1

这样,当你查询“大学”关键字的时候,你可以直接根据倒排索引构建出的映射关系得知再文档1,2,3中包含“大学”关键字,随后直接返回结果集,而不需要再遍历文档了,这样是不是快多了?

这是我在阿里云开发者社区上找的一张图,介绍了正向索引和倒排索引构建的数据关系谁占据主体地位以及他们之间最重要的区别:

好啦,在简单介绍了正向索引和倒排索引之后想必你对ES就有了一个大体上的理解:这是一个专门用于搜索服务的数据库,是为你的web服务构建搜索功能的首选。

Index(待更新)

相当于MySQL中的表

Mapping(待更新)

相当于MySQL中的表结构

Document(待更新)

相当于MySQL中的表中数据

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

Venera漫画应用下载管理完全指南:从离线阅读到存储优化

Venera漫画应用下载管理完全指南:从离线阅读到存储优化 Venera作为一款跨平台漫画应用,其下载管理功能为用户提供了从在线浏览到离线阅读的完整解决方案。无论是通勤途中的碎片化阅读,还是网络不稳定环境下的持续追更,Venera的下…

作者头像 李华
网站建设 2026/4/27 5:51:48

C++位图学习笔记

位图在处理海量数据(如 40 亿个整数)时,传统的哈希表、set容器等等会消耗大量内存,这显然是不划算的。如果能用40亿个比特位来表示从0到40亿是否存在(0不存在,1存在),就能节省大量空…

作者头像 李华
网站建设 2026/4/27 5:51:42

2026国内 LLM Coding Plan 订阅套餐

文章目录 前言一、快速对比二、AI Coding Plan1. 方舟 Coding Plan(字节)2. glm-coding(智谱)3. 百度千帆Coding Plan4. 腾讯云大模型Coding Plan5. 阿里云百炼Coding Plan6. MiniMax Token Plan7. Kimi Code Plan (月之暗面)8. 摩尔线程 AI Coding Plan (国产) 总结 前言 202…

作者头像 李华
网站建设 2026/4/27 5:32:22

Voxtral-4B-TTS小白教程:3步实现文本转语音并下载

Voxtral-4B-TTS小白教程:3步实现文本转语音并下载 1. 快速了解Voxtral-4B-TTS Voxtral-4B-TTS-2603是Mistral发布的开源语音合成模型,它能将文字转换成自然流畅的语音。想象一下,你只需要输入一段文字,就能立刻听到一个真人般的…

作者头像 李华