Java基础、中级、高级、架构面试资料

一网打尽Elasticsearch的优点,使用场景,全文检索,近实时等知识点

JAVA herman 13311浏览
公告:“业余草”微信公众号提供免费CSDN下载服务(只下Java资源),关注业余草微信公众号,添加作者微信:xttblog2,发送下载链接帮助你免费下载!
本博客日IP超过2000,PV 3000 左右,急需赞助商。
极客时间所有课程通过我的二维码购买后返现24元微信红包,请加博主新的微信号:xttblog2,之前的微信号好友位已满,备注:返现
受密码保护的文章请关注“业余草”公众号,回复关键字“0”获得密码
所有面试题(java、前端、数据库、springboot等)一网打尽,请关注文末小程序
视频教程免费领
腾讯云】1核2G5M轻量应用服务器50元首年,高性价比,助您轻松上云

在全文搜索领域,Elasticsearch 占据了大部分的江山,这也导致了它的市值,居高不下。今天我抽个时间再谈一谈 Elasticsearch 的特点,使用场景,开源产品等内容,希望能够方便大家理解!

所谓的全文检索是指计算机索引程序通过扫描文章中的每一个词,对每一个词建立一个索引,指明该词在文章中出现的次数和位置,当用户查询时,检索程序就根据事先建立的索引进行查找,并将查找的结果反馈给用户的检索方式。这个过程类似于通过字典中的检索字表查字的过程。

BAT架构师带你学 Elasticsearch

根据这个全文检索的解释,我们就可以猜测出一些关于它的使用场景。

  • 搜索领域: 百度、谷歌,全文检索,高亮,搜索推荐等。
  • 内容网站: 用户行为日志(点击、浏览、收藏、评论) + 社交网络数据,数据分析(将公众对文章的反馈提交至文章作者),包括网站内容搜索等。
  • Stack Overflow(IT技术论坛): 全文检索,搜索相关问题和答案。
  • GitHub(开源代码管理), 搜索管理其托管的上千亿行代码。
  • 日志数据分析: ELK技术栈(Elasticsearch + Logstash + Kibana)对日志数据进行采集和分析。
  • 商品价格监控网站: 用户设定某商品的价格阈值,当价格低于该阈值时,向用户推送降价消息。
  • BI系统(Business Intelligence, 商业智能): 分析某区域最近 3 年的用户消费额的趋势、用户群体的组成结构等。
  • 其他应用: 电商、招聘、门户等网站的内部搜索服务,IT系统(OA、CRM、ERP等)的内部搜索服务、数据分析等。

根据这些使用场景,Elastic 开发出了相当多的收费和免费的产品,比如:Beats 是一个代理,将不同类型的数据发送到 Elasticsearch 中;Shield 提供基于角色的访问控制与审计,加密通信、认证保护整个 ES 的数据,为 ES 带来企业级的安全性;Watcher 是 ES 的警报和通知工具,检测 ES 的状态,在异常发生时进行提醒;Marvel: 是 ES 的管理和监控工具,检测 ES 集群的索引和节点的活动。

根据这些产品,可以看出,多数都是收费的。虽然 Elasticsearch 很好用,但是它每年会爆发出非常多的安全问题。原因是它的安全模块是收费的!

但是,这并不影响人们学习和使用 Elasticsearch,因为它具备了太多的优点。虽然它的安全模块收费,但是我们也可以完全自己来实现它的安全保护,防止数据泄露。

ES 的优点,总结了下面 5 条,供大家参考:

  • 横向可扩展性: 作为大型分布式集群,很容易就能扩展新的服务器到ES集群中;也可运行在单机上作为轻量级搜索引擎使用。
  • 更丰富的功能: 与传统关系型数据库相比,ES提供了全文检索、同义词处理、相关度排名、复杂数据分析、海量数据的近实时处理等功能。
  • 分片机制提供更好地分布性: 同一个索引被分为多个分片(Shard),利用分而治之的思想提升处理效率。
  • 高可用: 提供副本(Replica)机制,一个分片可以设置多个副本,即使在某些服务器宕机后,集群仍能正常工作。
  • 开箱即用: 提供简单易用的 API,服务的搭建、部署和使用都很容易操作。
Redis、HBase、ElasticSearch之间的优缺点比较

ES 的这些优点导致了,在全文检索、结构化检索、数据分析、海量数据的近实时处理等领域具有巨大的优势。

下面我给大家说一说,全文检索、结构化检索、数据分析三者的区别吧。

  • 全文检索: 搜索商品名称包含”编程思想”的商品: select * from products where product_name like “%编程思想%”;
  • 结构化检索: 搜索商品分类为”计算机科学”的所有商品: select * from products where category_id=’计算机科学’;
  • 数据分析: 分析每一种商品分类下有多少件商品: select category_id, count(*) from products group by category_id;

这些 Elasticsearch 都可以做,而且性能极其高效,因为它能提供近实时的搜索能力。

这里需要注意的是,非近实时、实时、近实时三者之间的关系与区别。

  • 非近实时: 检索x个数据要花费很长时间(这就不是近实时,而是离线批处理, batch-processing)。
  • 实时: 数据的处理与响应都是立即呈现的,几乎没有间隔,这在大数据应用场景下是很难达到的要求。
  • 近实时(near real-time, NRT): 对海量数据进行搜索和分析的响应耗时控制在秒级以内,方可称为近实时。

以上,希望能够帮助到每一位读者!

业余草公众号

最后,欢迎关注我的个人微信公众号:业余草(yyucao)!可加作者微信号:xttblog2。备注:“1”,添加博主微信拉你进微信群。备注错误不会同意好友申请。再次感谢您的关注!后续有精彩内容会第一时间发给您!原创文章投稿请发送至532009913@qq.com邮箱。商务合作也可添加作者微信进行联系!

本文原文出处:业余草: » 一网打尽Elasticsearch的优点,使用场景,全文检索,近实时等知识点