ElasticSearch是一款大数据场景下的分布式全文搜索引擎,目前使用越来越多,下面重点详解ElasticSearch的应用场景。
搜索引擎
ElasticSearch为搜索而生,用于搭建全文搜索系统是自然而然的事情,它能够提供快速的索引和搜索功能。
在这类场景中较典型的应用领域是,
- 电商搜索;
- 地图搜索;
- 新闻搜索;
- 等各类站内搜索。
举个简单的例子,比如:要买手机,你登陆淘宝后,在搜索框搜索”手机“,会出现N个手机和手机周边的搜索数据。
再比如:类似百度,在网站的站内搜索,IT系统的检索等等,都是典型的搜索应用场景。
日志分析
ElasticSearch官方提供的ELK,也就是Elasticsearch+Logstash+Kibana全家桶简称,可以完成日志采集再到可视化的数据分析工作。
日志分析整体架构,如下图所示:
Logstash主要用于:采集日志,作为日志的搜集、分析、过滤日志等的工具,支持大量的数据获取方式。
日志主要包括:系统日志、应用程序日志、以及安全日志等。
日志的作用:系统运维和开发人员可以通过日志了解服务器软硬件信息,经常分析日志可以了解服务器的负荷,性能安全性,从而及时采取措施纠正错误。
日志采集之后,我们可以使用ElasticSearch来作为数据存储,以及搜索使用,暴露出具体的API等接口(基于RESTful web接口),然后使用Kibana来展示界面。
这里的Kibana的主要作用:Kibana为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助汇总、分析和搜索重要数据日志。
海量数据查询
目前大量的系统用MySQL作为数据库,但随着业务的开展数据量会越来越大,而MySQL的性能会越来越差。
虽然可以通过分库分表的方案进行解决,但是操作比较复杂,而且往往每隔一段时间就需要进行扩展,这种情况下可以将数据从MySQL同步到Elasticsearch。
改进后,整体架构如下图所示:
针对实时性要求不太高,或者主要查询历史数据且数据量比较大的场景:使用ElasticSearch提供查询。
而对需要事务实时控制的即时数据还是通过MySQL存储和查询。
独立的数据库系统
Elasticsearch本身提供了数据持久化存储的能力,并且提供了增删改查的功能。
在某些应用场景下:可以直接当做数据库系统来使用,既提供了存储能力,又能够同时具备搜索能力。
例如:博客系统、评论系统等应用场景。
陈睿mikechen
10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。
关注「mikechen」公众号,获取更多技术干货!
后台回复【面试】即可获取《史上最全阿里Java面试题总结》,后台回复【架构】,即可获取《阿里架构师进阶专题全部合集》