news 2026/4/15 6:33:13

两句话理解 ElasticSearch 搜索引擎数据库的作用

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
两句话理解 ElasticSearch 搜索引擎数据库的作用

一个有两千万商品的商品表,如何提高根据商品名关键字检索商品的效率,搜索引擎数据库 ElasticSearch

一、个人理解

  • 在 MySQL 数据库中有一个商品表,表中有 2 千万个商品数据,现在要根据商品名称关键字,去查找相关的商品,如何提高效率。
  • 此时如果想提高效率,需要用到 elasticsearch 建立商品索引,提高根据商品名称关键字查找商品的效率。
  • 你可能会想到,MySQL 使用 like 模糊查询不行吗?加索引不就可以提高效率吗?模糊查询的字段索引是失效的。

二、AI 验证理解

你的理解非常正确,这正是 Elasticsearch (ES) 最擅长的场景之一。

面对 2000 万条数据的商品表,使用 MySQL 进行商品名称的关键字查询(尤其是模糊查询)会出现严重的性能瓶颈。而引入 Elasticsearch 建立索引,是业界公认的提升查询效率的最佳实践。

为了让你更清楚地了解其中的原因和具体做法,我为你详细拆解一下:

❓ 1. 为什么要用 Elasticsearch?(原理对比)

在处理“商品名称关键字搜索”这种需求时,MySQL 和 ES 的底层机制有本质区别:

特性MySQL (B+树索引)Elasticsearch (倒排索引)
存储结构按行存储,B+树主要用于加速主键或唯一键查找。倒排索引。将商品名称拆解成一个个词语,建立“词语 -> 商品”的映射。
模糊查询使用LIKE '%关键字%'会导致全表扫描,2000万数据响应极慢(可能需要数秒甚至更久)。天生为搜索设计。输入“苹果”,直接找出包含“苹果”的所有商品 ID。
分词能力原生分词能力弱,对中文支持不友好。支持强大的中文分词器(如 IK 分词器),能智能切分“华为手机”为“华为”和“手机”。
适用场景事务处理、精确匹配(如通过 ID 查商品)。全文检索、模糊搜索、多维度筛选。

结论:对于“根据名称关键字找商品”,ES 的速度通常是毫秒级的,而 MySQL 在大数据量下可能是秒级甚至超时。

🚀 2. 具体如何做?(架构方案)

你不需要抛弃 MySQL,而是采用“MySQL + ES” 的混合架构

  • MySQL:作为主库,负责存储商品的完整数据(库存、价格、销量等),保证数据的准确性和事务一致性。
  • Elasticsearch:作为查询库,只负责根据商品名称、描述等进行快速检索。

数据同步流程:

  1. 同步机制:利用 Canal 或 Logstash 监听 MySQL 的 Binlog 日志。
  2. 写入:当商品信息在 MySQL 中被修改(增删改)时,通过程序将变更同步到 ES 中。
  3. 查询:前端搜索请求直接发往 ES,ES 返回商品 ID 列表,应用层再根据 ID 去 MySQL 或缓存中获取详细信息。

💡 3. 针对你的场景,还需要注意什么?

虽然 ES 能解决搜索慢的问题,但在实施时,我有几点建议供你参考:

  • 数据一致性:ES 是通过异步方式从 MySQL 同步数据的,所以会有1-2 秒钟的延迟。如果用户刚上架商品立刻搜索,可能搜不到。这在搜索场景中通常是可接受的(最终一致性)。
  • 分页问题:如果你不仅要搜,还要翻到第 1000 页,MySQL 的 LIMIT 10000, 20 会很慢。ES 的深度分页(Deep Pagination)虽然也有优化空间,但配合 search_after 特性,处理 2000 万数据的翻页会比 MySQL 更高效。
  • 冷热数据分离:如果这 2000 万数据中,有大量是下架或很久没浏览的“冷数据”,可以考虑只把热数据同步到 ES,进一步节省资源。

总结来说:你的思路完全正确。对于 2000 万级别的商品表,引入 Elasticsearch 来处理商品名称的模糊搜索,是提升效率的最优解。

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

深度学习毕设项目:基于python-CNN卷积神经网络对鸡和兔识别

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

作者头像 李华
网站建设 2026/4/5 12:03:28

深度学习毕设项目推荐-基于python_CNN卷积神经网络对甜点识别

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

作者头像 李华
网站建设 2026/4/3 15:56:52

成功案例|华恒智信助力某大型钢铁设计院解决人才测评体系搭建与落地实践

【客户行业】 钢铁冶金、工程设计与咨询、国有全资子公司、国家级综合设计院、冶金环保建筑多领域【问题类型】 人才测评体系设计、高潜人才识别模型与盘点工具、人才盘点体系设计、任职资格体系设计、分层分类培训体系、核心人才激励方案、人力资源体系诊断与优化【引言】某大…

作者头像 李华
网站建设 2026/3/30 10:51:41

博客标题:深入理解Shell:从进程控制到自主实现一个微型Shell

引言 Shell是每个开发者或系统管理员日常工作中不可或缺的工具。但你是否曾好奇过,当你输入一个命令(如ls或ps)后,Shell背后到底发生了什么?本文将带你从进程控制的基础知识出发,一步步揭开Shell的神秘面纱…

作者头像 李华
网站建设 2026/4/8 20:40:11

深度学习毕设项目:基于python_CNN卷积神经网络对甜点识别

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

作者头像 李华