开篇:为什么数据库查不动了
MySQL 的 LIKE '%关键词%' 在数据量大了之后会变得极慢,因为它是全表扫描。想象一下在一本 1000 页的书里找"云计算"这个词,如果没有目录和索引,你只能一页一页翻 -- 这就是 MySQL 模糊搜索的本质。
而 ElasticSearch(简称 ES)的做法是:先给每个词建一个"目录",记录它出现在哪些文档里。搜索时直接查目录,瞬间定位。这个"目录",就是倒排索引。
倒排索引原理
正排索引 vs 倒排索引
传统数据库用的是正排索引:从文档找关键词。