ElasticSearch学习(一):ElasticSearch介绍

  1、ElasticSearch是什么?html

  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接口,因此能够被任何编程语言调用;elasticsearch

  说一下Lucene的优缺点:编程语言

  优势:1)高性能;2)易扩展;分布式

  缺点:

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

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

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

  2、Elastic Stack的构成

  一、ElasticSearch对数据进行搜索、分析和存储,其是基于JSON的分布式搜索和分析引擎,专门为实现水平可扩展性、高可靠性和管理便捷性而设计的

它的实现原理主要分为如下几个步骤:

    1)首先用户将数据提交到ElasticSearch数据库中;

    2)再经过分词控制器将对应的语句分词;

    3)将分词结果及其权重一并存入,以备用户在搜索数据时,根据权重将结果排名和打分,将返回结果呈现给用户;

  二、Kibana实现数据可视化,其做用就是在ElasticSearch中进行民航。Kibana可以以图表的形式呈现数据,而且具备可扩展的用户界面,能够全方位的配置和管理ElasticSearch。

    Kibana最先的时候是基于Logstash建立的工具,后被Elastic公司在2013年收购。

    1)Kibana能够提供各类可视化的图表;

    2)能够经过机器学习的技术,对异常状况进行检测,用于提早发现可疑问题;

  三、Beats是一个面向轻量型采集器的平台,这些采集器能够从边缘机器向Logstash、ElasticSearch发送数据,它是由Go语言进行开发的,运行效率方面比较快。从下图中能够看出,不一样Beats的套件是针对不一样的数据源。

  

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

    它具备以下特性:

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

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

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

    4)监控;

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

  3、为何要学习ElasticSearch?

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

  

  一、在当前软件行业中,搜索是一个软件系统或平台的基本功能, 学习ElasticSearch就能够为相应的软件打造出良好的搜索体验。

  二、其次,ElasticSearch具有很是强的大数据分析能力。虽然Hadoop也能够作大数据分析,可是ElasticSearch的分析能力很是高,具有Hadoop不具有的能力。好比有时候用Hadoop分析一个结果,可能等待的时间比较长。

  三、ElasticSearch能够很方便的进行使用,能够将其安装在我的的笔记本电脑,也能够在生产环境中,将其进行水平扩展。

  四、国内比较大的互联网公司都在使用,好比小米、滴滴、携程等公司。另外,在腾讯云、阿里云的云平台上,也都有相应的ElasticSearch云产品可使用。

  五、在当今大数据时代,掌握近实时的搜索和分析能力,才能掌握核心竞争力,洞见将来。(涨工资 

  4、学习ElasticSearch的入手层面

  一、开发层面

    1)了解ElasticSearch有基本功能;2)底层分布式工做原理;3)针对数据进行数据建模;

  二、运维层面

    1)进行集群的容量规划;2)对集群进行滚动升级;3)对性能的优化;4)出现问题后,对问题的诊断与解决;

  三、方案层面

    1)学习ElasticSearch后,能够针对实际状况,解决搜索的相关问题;2)能够将ELK运用到大数据分析场景中; 

  5、ElasticSearch的主要功能及应用场景

  一、主要功能:

    1)、海量数据的分布式存储以及集群管理,达到了服务与数据的高可用以及水平扩展;

    2)、近实时搜索,性能卓越。对结构化、全文、地理位置等类型数据的处理;

    3)、海量数据的近实时分析(聚合功能)

  二、应用场景:

    1)网站搜索、垂直搜索、代码搜索;

    2)日志管理与分析、安全指标监控、应用性能监控、Web抓取舆情分析; 

  6、Elastic Stack的生态圈

  

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

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

  7、ElasticSearch与DB的集成

  

  针对上图,能够分为两种状况:

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

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

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

  

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

 

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

相关文章
相关标签/搜索