一、ElasticSearch是什么?

  ElasticSearch是一款非常强大的、基于Lucene的开源搜索及分析引擎,可以帮助你从海量数据中,快速找到相关的数据信息。

  比如,当你在GitHub上搜索时,ElasticSearch不仅可以帮助你找到相关的代码库,还可以帮助你实现代码级的搜索和高亮显示;当你在网上购物时,ElasticSearch可以帮助你推荐相关的商品;当你打车时,ElasticSearch可以通过定位附近的乘客和司机,帮助平台优化调度。

  除了搜索,结合Kibana、Logstash、Beats开源产品,Elastic Stack(简称ELK)还被广泛运用在大数据近实时分析领域,包括:日志分析、指标监控、信息安全等。它可以帮助你探索海量结构化、非结构化数据,按需创建可视化报表,对监控数据设置报警阈值,通过使用机器学习,自动识别异常状况。

  ElasticSearch是基于Restful WebApi,使用Java语言开发的搜索引擎库类,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。其客户端在Java、C#、PHP、Python等许多语言中都是可用的。相应下载地址: https://www.elastic.co/guide/en/elasticsearch/client/index.html

  所以,ElasticSearch具备两个优势:

  1)天生支持分布式,可水平扩展;

  2)提供了Restful接口,降低全文检索的学习曲线,因为Restful接口,所以可以被任何编程语言调用;

  说一下Lucene的优缺点:

  优点:1)高性能;2)易扩展;

  缺点:

  1)只能基于Java语言开发;

  2)类库的接口学习曲线陡峭;

  3)原生并不支持水平扩展;

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

  ElasticSearch学习(一):ElasticSearch介绍-LMLPHP

  4、Logstash是动态数据收集管道,拥有可扩展的插件生态系统,支持从不同来源采集数据,转换数据,并将数据发送到不同的存储库中。其能够与ElasticSearch产生强大的协同作用,后被Elastic公司在2013年收购。

    它具有如下特性:

    1)实时解析和转换数据;

    2)可扩展,具有200多个插件;

    3)可靠性、安全性。Logstash会通过持久化队列来保证至少将运行中的事件送达一次,同时将数据进行传输加密;

    4)监控;

    对于日志的解决方案一般分为:日志搜索、格式化分析、全文检索、风险告警; 

  三、为什么要学习ElasticSearch?

  根据DB Engine的排名显示,ElasticSearch是最受欢迎的企业级搜索引擎。根据https://db-engines.com/en/ranking网站排名可知,比较靠前的有三家大数据搜索引擎公司,除了ElasticSearch,还有Splunk和Solr。其中Solr也是基于Lucene。

  ElasticSearch学习(一):ElasticSearch介绍-LMLPHP

  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学习(一):ElasticSearch介绍-LMLPHP

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

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

  七、ElasticSearch与DB的集成

  ElasticSearch学习(一):ElasticSearch介绍-LMLPHP

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

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

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

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

  ElasticSearch学习(一):ElasticSearch介绍-LMLPHP

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

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

06-30 23:11