ElasticStack学习(一):ElasticStack介绍
一、elastic stack的构成
1、elasticsearch对数据进行搜索、分析和存储,其是基于json的分布式搜索和分析引擎,专门为实现水平可扩展性、高可靠性和管理便捷性而设计的。
它的实现原理主要分为以下几个步骤:
1)首先用户将数据提交到elasticsearch数据库中;
2)再通过分词控制器将对应的语句分词;
3)将分词结果及其权重一并存入,以备用户在搜索数据时,根据权重将结果排名和打分,将返回结果呈现给用户;
2、kibana实现数据可视化,其作用就是在elasticsearch中进行民航。kibana能够以图表的形式呈现数据,并且具有可扩展的用户界面,可以全方位的配置和管理elasticsearch。
kibana最早的时候是基于logstash创建的工具,后被elastic公司在2013年收购。
1)kibana可以提供各种可视化的图表;
2)可以通过机器学习的技术,对异常情况进行检测,用于提前发现可疑问题;
3、beats是一个面向轻量型采集器的平台,这些采集器可以从边缘机器向logstash、elasticsearch发送数据,它是由go语言进行开发的,运行效率方面比较快。从下图中可以看出,不同beats的套件是针对不同的数据源。
4、logstash是动态数据收集管道,拥有可扩展的插件生态系统,支持从不同来源采集数据,转换数据,并将数据发送到不同的存储库中。其能够与elasticsearch产生强大的协同作用,后被elastic公司在2013年收购。
它具有如下特性:
1)实时解析和转换数据;
2)可扩展,具有200多个插件;
3)可靠性、安全性。logstash会通过持久化队列来保证至少将运行中的事件送达一次,同时将数据进行传输加密;
4)监控;
对于日志的解决方案一般分为:日志搜索、格式化分析、全文检索、风险告警;
二、elasticsearch是什么?
elasticsearch是一款非常强大的、基于lucene的开源搜索及分析引擎,可以帮助你从海量数据中,快速找到相关的数据信息。
比如,当你在github上搜索时,elasticsearch不仅可以帮助你找到相关的代码库,还可以帮助你实现代码级的搜索和高亮显示;当你在网上购物时,elasticsearch可以帮助你推荐相关的商品;当你打车时,elasticsearch可以通过定位附近的乘客和司机,帮助平台优化调度。
除了搜索,结合kibana、logstash、beats开源产品,elastic stack(简称elk)还被广泛运用在大数据近实时分析领域,包括:日志分析、指标监控、信息安全等。它可以帮助你探索海量结构化、非结构化数据,按需创建可视化报表,对监控数据设置报警阈值,通过使用机器学习,自动识别异常状况。
elasticsearch是基于restful webapi,使用java语言开发的搜索引擎库类,并作为apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。其客户端在java、c#、php、python等许多语言中都是可用的。相应下载地址:
所以,elasticsearch具备两个优势:
1)天生支持分布式,可水平扩展;
2)提供了restful接口,降低全文检索的学习曲线,因为restful接口,所以可以被任何编程语言调用;
说一下lucene的优缺点:
优点:1)高性能;2)易扩展;
缺点:
1)只能基于java语言开发;
2)类库的接口学习曲线陡峭;
3)原生并不支持水平扩展;
三、为什么要学习elasticsearch?
根据db engine的排名显示,elasticsearch是最受欢迎的企业级搜索引擎。根据网站排名可知,比较靠前的有三家大数据搜索引擎公司,除了elasticsearch,还有splunk和solr。其中solr也是基于lucene。
1、在当前软件行业中,搜索是一个软件系统或平台的基本功能, 学习elasticsearch就可以为相应的软件打造出良好的搜索体验。
2、其次,elasticsearch具备非常强的大数据分析能力。虽然hadoop也可以做大数据分析,但是elasticsearch的分析能力非常高,具备hadoop不具备的能力。比如有时候用hadoop分析一个结果,可能等待的时间比较长。
3、elasticsearch可以很方便的进行使用,可以将其安装在个人的笔记本电脑,也可以在生产环境中,将其进行水平扩展。
4、国内比较大的互联网公司都在使用,比如小米、滴滴、携程等公司。另外,在腾讯云、阿里云的云平台上,也都有相应的elasticsearch云产品可以使用。
5、在当今大数据时代,掌握近实时的搜索和分析能力,才能掌握核心竞争力,洞见未来。(涨工资)
四、学习elasticsearch的入手层面
1、开发层面
1)了解elasticsearch有基本功能;2)底层分布式工作原理;3)针对数据进行数据建模;
2、运维层面
1)进行集群的容量规划;2)对集群进行滚动升级;3)对性能的优化;4)出现问题后,对问题的诊断与解决;
3、方案层面
1)学习elasticsearch后,可以针对实际情况,解决搜索的相关问题;2)可以将elk运用到大数据分析场景中;
五、elasticsearch的主要功能及应用场景
1、主要功能:
1)、海量数据的分布式存储以及集群管理,达到了服务与数据的高可用以及水平扩展;
2)、近实时搜索,性能卓越。对结构化、全文、地理位置等类型数据的处理;
3)、海量数据的近实时分析(聚合功能)
2、应用场景:
1)网站搜索、垂直搜索、代码搜索;
2)日志管理与分析、安全指标监控、应用性能监控、web抓取舆情分析;
六、elastic stack的生态圈
从上图中可以看到,elasticsearch做为elk中的核心部分,它起到了数据存储的作用。而kibana在上层可以为使用者提供一个可视化的界面。logstash和beats可以将各种各样的数据进行抓取和收集。
在右侧的x-pack部分,是elastic公司所提供的几种收费服务,同时elastic公司也提供云的解决方案。
七、elasticsearch与db的集成
针对上图,可以分为两种情况:
1、将elasticsearch当成数据库来存储数据,好处是架构比较简单;
2、若数据更新比较频繁,同时需要考虑数据事务性时,应该先将数据存入数据库,然后建立一个合适的同步机制,将数据同步到elasticsearch中;
八、elk在数据指标收集,日志分析的架构设计
从上图中可以知道,通过beats或者程序来进行数据方面的收集,当收集的数据量较大时,需要加入一层(redis、kafka、rabbitmq)进行数据缓冲,然后将数据送入logstash进行聚合及数据处理,最后通后elasticsearch进行分词、创建索引并存储,通过kibana或者grafana这类图形化工具进行数据的可视化和数据分析。
大家可关注我的公众号
知识学习来源:《elasticsearch核心技术与实战》
上一篇: Shell脚本
下一篇: Linux入门——注意事项
推荐阅读
-
浅谈Bootstrap学习第一章(介绍)
-
ElasticStack学习(十):深入ElasticSearch搜索之QueryFiltering、多/单字符串的多字段查询
-
【WPF学习】第一章 XAML介绍
-
ElasticStack学习(八):ElasticSearch索引模板与聚合分析初探
-
ElasticStack学习(七):ElasticSearch之Mapping初探
-
Linux系统学习(一)一Linux介绍
-
Spring的学习一(Spring的介绍,搭建第一个Spring程序)
-
socket.io学习教程之基础介绍(一)
-
ElasticStack学习(二):ElasticStack安装与运行
-
ElasticStack学习(一):ElasticStack介绍