同学们好!本篇文章主要是介绍Elasticsearch的自动补全功能,以及提供一个小案例给大家。
- 😄博主:程序员一灯,一个老菜鸟,哈哈哈哈
- 🚌一个人可以走的很快,一群人可以走的很远🇨🇳
- 🎉点赞➕评论➕收藏 ➕关注== 养成习惯(一键四连)📝
- 🎉欢迎关注💗一起学习👍一起讨论⭐️一起进步📝
- 🙏作者水平有限,欢迎各位大佬指点,相互学习进步!😆
一、解释
二、问题抛出
三、原理解释
四、倒排索引的视觉表示
一、解释倒排索引的英文:Inverted Index。其实翻译过来叫倒置索引更加的贴切,因为倒排索引很多人以为是数据库倒排order by desc。。。。😂🤣
二、问题抛出Elasticsearch 中的索引实际上就是所谓的倒排索引,它是所有搜索引擎工作的机制。
看看百度百科的定义:倒排索引_百度百科
倒排索引源于实际应用中需要根据属性的值来查找记录。
在我们百度搜索资料的时候,大家是经常看到搜索不仅仅是局限于标题,大多数时候是搜索到内容的对吧?
从上面可以看出,如果让我们自己去设计数据结构,肯定不能按照以往的那种(查询标题)去设计对吧
正常的mysql:
Goods表:ID addTime goodsName goodsDetails、goodsSEO
我们去设计索引是将goodsName去拆分出词,按照商品名称搜索到该条记录值
但是我们将这条记录放到互联网,那么搜索范围是不是就小太多了?
我如果想根据goodsSEO、goodsDetails中的关键词搜索,是不是范围就大了很多,那如何设计呢?
有同学肯定说,那就把goodsSEO、goodsDetails中的词也索引了不就得了,一了百了
对的,搜索引擎就是这么干的,他把标题、内容都给索引了
这么做,就是倒排/倒置索引,正常的数据数据是:key/value形式,按照key索引即可
倒排索引是按照value去索引
当然了,es是将每个字段都给索引了,也就是每个字段都给你整了一套分词、索引,是不是很贴心?
很low?😂
四、倒排索引的视觉表示将文档内容进行索引,后面的Document代表该条记录的ID值,也就是整条数据
比如找到了Term中butterfly就找到了Document1了