posts - 609,  comments - 13,  views - 64万
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

来源:https://www.zhihu.com/question/637732937
ES的底层实现:倒排索引
正排索引(Forward Index)的实现方式为,通过文档ID去查找整个文档内容,适用于全部文档遍历或根据某个文档ID查找内容的场景。
而倒排索引(Inverted Index)的实现方式,则是通过文档中的关键词去查找文档ID列表,这也就是其非常适用于全文检索的原因。
ES复杂查询的实现方式和全文检索比较类似,同样是用到了倒排索引 + 正排索引的实现机制。
当将表中的数据保存到ES时,ES会为表中的每个字段都建立一个倒排索引。

MySQL和Elasticsearch是两种不同类型的数据存储和检索系统,它们各有优势和应用场景。
### MySQL:MySQL是一个关系型数据库管理系统(RDBMS),它使用结构化查询语言(SQL)进行数据管理。
MySQL非常适合处理结构化数据,并且在以下方面表现优异:
- 事务处理:MySQL支持ACID(原子性、一致性、隔离性、持久性)事务,非常适合需要事务支持的应用,如金融服务。
- 复杂查询:MySQL能够处理复杂的SQL查询,包括多表连接、子查询、窗口函数等。
- 数据完整性:通过外键等机制,MySQL能够强制实施数据的完整性约束。
- 成熟稳定:作为一个成熟的数据库解决方案,MySQL有广泛的社区支持和丰富的文档资源

### Elasticsearch:Elasticsearch是一个基于Lucene构建的开源搜索引擎,它被设计用来快速地、在近实时地情况下处理大量数据,并支持复杂的数据分析。
Elasticsearch在以下方面表现优异:
- 全文搜索:Elasticsearch提供了强大的全文搜索功能,能够快速地对大量文本进行搜索。
- 水平扩展:Elasticsearch可以通过添加更多节点来轻松扩展,处理PB级别的数据。
- 实时分析:Elasticsearch提供了聚合功能,可以在搜索时进行实时数据分析。
- 高可用性和分布式:Elasticsearch天生支持分布式,可以在多个节点之间复制数据,提高系统的可用性和容错能力。
### 为什么需要Elasticsearch:尽管MySQL在数据存储和管理方面表现出色,但在以下场景中,Elasticsearch可能是更好的选择:
- 当需要对大量文本数据进行快速全文搜索时。
- 当系统需要处理日志、事件或其他机器生成数据的实时分析和可视化时。
- 当应用需要水平扩展以处理大量数据时。
- 当需要快速的搜索响应时间和近实时的索引更新时。
### 结论:MySQL和Elasticsearch各有所长,它们可以单独使用,也可以结合在一起使用,以利用各自的优势。
例如,可以使用MySQL存储应用的主要事务数据,同时使用Elasticsearch提供全文搜索和日志分析功能。

MySQL 系列文章:https://www.ddkk.com/zhuanlan/db/mysql/3/1.html
ElasticSearch 系列文章:https://www.ddkk.com/zhuanlan/search/elasticsearch/1/1.html
ES查询常用语法:https://blog.csdn.net/jiayoudangdang/article/details/128520075

posted on   邢帅杰  阅读(56)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
历史上的今天:
2020-10-22 .NET Core使用缓存
点击右上角即可分享
微信分享提示