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

  

  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。

  

  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核心技术与实战》

ElasticSearch学习(一):ElasticSearch介绍的更多相关文章

  1. Elasticsearch学习系列之介绍安装

    前言 关于ELK搭建的问题,或许你还有些模糊,其实你把我视频里讲的知识点串联起来就明白了.搭建ELK环境,看下面我说的: 首先,先把ES集群搭建起来,建议用CentOS6.5 64位的linux系统, ...

  2. elasticsearch学习笔记--原理介绍

    前言:上一篇中我们对ES有了一个比较大概的概念,知道它是什么,干什么用的,今天给大家主要讲一下他的工作原理 介绍:ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户 ...

  3. Elasticsearch学习(5) Elasticsearch+logstash +filebeat+log4j的日志系统

    最近需要使用Elasticsearch做一个日志系统,本文只介绍log4j内容同步到Elasticsearch,至于日志的查询和分类,会在后面介绍. 一.配置并打开Elasticsearch 这个操作 ...

  4. Elasticsearch学习之ElasticSearch 5.0.0 安装部署常见错误或问题

    ElasticSearch 5.0.0 安装部署常见错误或问题 问题一: [--06T16::,][WARN ][o.e.b.JNANatives ] unable to install syscal ...

  5. Elasticsearch 学习笔记 Elasticsearch及Elasticsearch head安装配置

    一.安装与配置 1.到官网下载Elasticsearch,https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.6. ...

  6. Elasticsearch学习笔记一

    Elasticsearch Elasticsearch(以下简称ES)是一款Java语言开发的基于Lucene的高效全文搜索引擎.它提供了一个分布式多用户能力的基于RESTful web接口的全文搜索 ...

  7. Elasticsearch学习总结 (Centos7下Elasticsearch集群部署记录)

    一.  ElasticSearch简单介绍 ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口.Elasticse ...

  8. elasticsearch学习笔记——相关插件和使用场景

    logstash-input-jdbc学习 ES(elasticsearch缩写)的一大优点就是开源,插件众多.所以扩展起来非常的方便,这也造成了它的生态系统越来越强大.这种开源分享的思想真是与天朝格 ...

  9. MacOS下ElasticSearch学习(第一天)

    ElasticSearch第一天 学于黑马和传智播客联合做的教学项目 感谢 黑马官网 传智播客官网 微信搜索"艺术行者",关注并回复关键词"elasticsearch&q ...

  10. ElasticSearch学习笔记-01 简介、安装、配置与核心概念

    一.简介 ElasticSearch是一个基于Lucene构建的开源,分布式,RESTful搜索引擎.设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便.支持通过HTTP使用JSON进 ...

随机推荐

  1. LVS实现负载均衡原理及安装配置

    LVS实现负载均衡原理及安装配置 负载均衡集群是 load balance 集群的简写,翻译成中文就是负载均衡集群.常用的负载均衡开源软件有nginx.lvs.haproxy,商业的硬件负载均衡设备F ...

  2. HDU1164_Eddy's research I【Miller Rabin素数测试】【Pollar Rho整数分解】

    Eddy's research I Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others ...

  3. centos下载安装mysql,并设置远程访问

    思路 获取安装文件→配置好路径→安装→设置权限→处理常见的问题. 1.下载 先建议去官网看看https://dev.mysql.com/,然后根据自己的常识找到下载路径.同时也找到最新版本. 下载方式 ...

  4. Python中 如何将一个字符串分成一个个字符

    其实   一个字符串  实质也是 一个列表 就很简单了: a = ' for item in a: print(item) 打印结果: 121512 如果进而要统计字符出现的次数 , 那就很简单了.

  5. 多元函数(multivariate function)分析(方向导数和梯度)

    二阶泰勒展开: f(x)=f(0)+f′Tx+12xTf′′x+o(⋅) 对等式右端求导,并置 0,得 x=f′′−1f′ 1. 方向导数与梯度 设有单位向量 h=(h1,h2,⋯,hn)∈Rn(当然 ...

  6. WPF在3D Cad模型中利用TextureCoordinates实现颜色渐变显示偏差值的变化

    原文:WPF在3D Cad模型中利用TextureCoordinates实现颜色渐变显示偏差值的变化 注:最近在做3D机械模型重建方面的软件,需要根据光栅传感器采集的数据绘制3D图形,并显示出色差以及 ...

  7. [视频]产品营销之拍出好电子产品,Peter Belanger是如何为苹果产品拍照的

    Peter Belanger –他就是那些颠覆你想象的苹果产品照片的摄影师.作为旧金山的顶级产品图片设计师的 Peter,他还拥有 eBay, Nike, Pixer 和 Square 等客户. 让我 ...

  8. LeetCode 36 Sudoku Solver

    Write a program to solve a Sudoku puzzle by filling the empty cells. Empty cells are indicated by th ...

  9. Layui 2.0.0 正式发布:潜心之作,开箱即用的前端UI框架(确实很多内容)

    Hi,久违了.处暑逼近之际,潜水半年的 layui 是时候出来透透气了.我们带来的是全新的 2.0 版本,一次被我们定义为“破茧重生”的倾情之作.如果你已曾用过 layui,你将真正感受到一次因小而大 ...

  10. style原则问题

    就近原则 1.“行内”覆盖“嵌入”,“嵌入”覆盖“外部”Style.xml <Window.Resources> <Grid.Resources> ….中间层 <Butt ...