90分钟搞懂github怎么实现从海量数据中搜索代码

ElasticSearch,简称es,es是一个开源的高拓展的分布式全文检索引擎 , 它可以近乎实时的存储、检索数据;本身扩展性很好 , 可以扩展到上百台服务器 , 处理PB级别的数据 。 es也使用java开发并使用Lucene作为其核心来实现所有索引和搜索的功能但是它的目的是通过简单的RESTfulAPI来隐藏Lucene的复杂性 , 从而让全文搜索变得简单 。 http请求:url来定位资源 , 通过http动词(put、delete、head、post、get)操作资源;
90分钟搞懂github怎么实现从海量数据中搜索代码
文章图片
搜索引擎原理就是建立反向索引(倒排索引) 。 es在Lucene的基础上进行封装 , 实现了分布式搜索引擎;es中的索引、类型和文档的概念类似于MySQL中的数据库、表和行;es采用Master-slave架构 , 实现了数据的分片和备份 。 es一个典型应用就志分析系统 。
90分钟搞懂github怎么实现从海量数据中搜索代码
文章图片
90分钟搞懂github怎么实现从海量数据中搜索代码】分析日志的用处:假如一个分布式系统有1000台机器 , 系统出现故障时 , 我要看下日志 , 还得一台一台登录上去查看 , 是不是非常麻烦?详细加群701826960可以免费相关学习资料一份资料+文档免费分享视频讲解+疑难解答
如果日志接入了ELK系统就不一样 。 比如系统运行过程中 , 突然出现了异常 , 在日志中就能及时反馈 , 日志进入ELK系统中 , 我们直接在Kibana就能看到日志情况 。 如果再接入一些实时计算模块 , 还能做实时报警功能 。
这都依赖ES强大的反向索引功能 , 这样我们根据关键字就能查询到关键的错误日志了 。
1)百度 , 谷歌 , 必应 。 我们可以通过他们去搜索我们需要的东西 。 但是我们的搜索不只是包含这些 , 还有京东站内搜索啊 。
2)互联网的搜索:电商网站 。 招聘网站 。 新闻网站 。 各种APP(百度外卖 , 美团等等)
3)windows系统的搜索,OA软件 , 淘宝SSM网站 , 前后台的搜索功能
总结:搜索无处不在 。 通过一些关键字 , 给我们查询出来跟这些关键字相关的信息
全文检索是指计算机索引程序通过扫描文章中的每一个词 , 对每一个词建立一个索引 , 指明该词在文章中出现的次数和位置 , 当用户查询时 , 检索程序就根据事先建立的索引进行查找 , 并将查找的结果反馈给用户的检索方式 。 这个过程类似于通过字典中的检索字表查字的过程 。
90分钟搞懂github怎么实现从海量数据中搜索代码
文章图片
全文检索的方法主要分为按字检索和按词检索两种 。 按字检索是指对于文章中的每一个字都建立索引 , 检索时将词分解为字的组合 。 对于各种不同的语言而言 , 字有不同的含义 , 比如英文中字与词实际上是合一的 , 而中文中字与词有很大分别 。 按词检索指对文章中的词 , 即语义单位建立索引 , 检索时按词检索 , 并且可以处理同义项等 。 英文等西方文字由于按照空白切分词 , 因此实现上与按字处理类似 , 添加同义处理也很容易 。 中文等东方文字则需要切分字词 , 以达到按词索引的目的 , 关于这方面的问题 , 是当前全文检索技术尤其是中文全文检索技术中的难点 , 在此不做详述 。
以前是根据ID查内容 , 倒排索引之后是根据内容查ID , 然后再拿着ID去查询出来真正需要的东西 。
90分钟搞懂github怎么实现从海量数据中搜索代码
文章图片
我们用搜索“牙膏”商品为例详细加群701826960可以免费相关学习资料一份资料+文档免费分享视频讲解+疑难解答