欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

ElasticStack学习(一):ElasticStack介绍

程序员文章站 2022-05-03 21:59:44
一、Elastic Stack的构成 1、ElasticSearch对数据进行搜索、分析和存储,其是基于JSON的分布式搜索和分析引擎,专门为实现水平可扩展性、高可靠性和管理便捷性而设计的。 它的实现原理主要分为以下几个步骤: 1)首先用户将数据提交到ElasticSearch数据库中; 2)再通过 ......

  一、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的套件是针对不同的数据源。

  ElasticStack学习(一):ElasticStack介绍

  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。

  ElasticStack学习(一):ElasticStack介绍

  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的生态圈

  ElasticStack学习(一):ElasticStack介绍

  从上图中可以看到,elasticsearch做为elk中的核心部分,它起到了数据存储的作用。而kibana在上层可以为使用者提供一个可视化的界面。logstash和beats可以将各种各样的数据进行抓取和收集。

在右侧的x-pack部分,是elastic公司所提供的几种收费服务,同时elastic公司也提供云的解决方案。 

  七、elasticsearch与db的集成

  ElasticStack学习(一):ElasticStack介绍

  针对上图,可以分为两种情况:

  1、将elasticsearch当成数据库来存储数据,好处是架构比较简单;

  2、若数据更新比较频繁,同时需要考虑数据事务性时,应该先将数据存入数据库,然后建立一个合适的同步机制,将数据同步到elasticsearch中; 

  八、elk在数据指标收集,日志分析的架构设计

  ElasticStack学习(一):ElasticStack介绍

  从上图中可以知道,通过beats或者程序来进行数据方面的收集,当收集的数据量较大时,需要加入一层(redis、kafka、rabbitmq)进行数据缓冲,然后将数据送入logstash进行聚合及数据处理,最后通后elasticsearch进行分词、创建索引并存储,通过kibana或者grafana这类图形化工具进行数据的可视化和数据分析。

 

  大家可关注我的公众号

  ElasticStack学习(一):ElasticStack介绍

  知识学习来源:《elasticsearch核心技术与实战》