刚入职不久,就在公司跟前辈导师了解到Elastic技术栈,让我着手准备负责部门ELK-Stack(云计算)的相关工作,于是开始整理学习与总结。
由于本人所在的是某大型央企银行的信息科技部门,与各大数据库交往比较密切,故本人对Elastic十分感兴趣。
一、简介
Elastic-Stack早期也称为ELK,现统一叫ELK stack。这一套技术栈解决的是企业级的业务需求,能够安全可靠地获取任何来源、任何格式的数据,然后实时地对数据进行搜索、分析和可视化。
使用此产品的客户闻名全球,有Google、Microsoft等等。现在国内的大厂也基本在投入Elastic服务。
(1)、Wikipedia 使用 Elasticsearch 提供带有高亮片段的全文搜索,还有 search-as-you-type 和 did-you-mean 的建议。
(2)、卫报 使用 Elasticsearch 将网络社交数据结合到访客日志中,实时的给它的编辑们提供公众对于新文章的反馈。
(3)、Stack Overflow 将地理位置查询融入全文检索中去,并且使用 more-like-this 接口去查找相关的问题与答案。
(4)、GitHub 使用 Elasticsearch 对1300亿行代码进行查询。
然而 Elasticsearch 不仅仅为巨头公司服务。它也帮助了很多初创公司,像 Datadog 和 Klout, 帮助他们将想法用原型实现,并转化为可扩展的解决方案。Elasticsearch 能运行在你的笔记本电脑上,或者扩展到上百台服务器上去处理PB级数据。
ELastic的官网为:https://www.elastic.co/。
其核心由这四个组件构成:Elasticsearch(核心,开源搜索引擎)、Kibana、Beats和 Logstash。
二、组件介绍
1、ElasticSearch 是一个基于 Apache Lucene 的开源搜索引擎。它通过RESTful API 来隐藏Lucene的复杂性,从而让全文搜索变得简单。不过,Elasticsearch 不仅仅是 Lucene 和全文搜索,我们还能这样去描述它:
- 分布式的实时文件存储,每个字段都被索引并可被搜索
- 分布式的实时分析搜索引擎
- 可以扩展到上百台服务器,处理PB级结构化或非结构化数据
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的层面:
1、开发层面
1)了解ElasticSearch有基本功能;2)底层分布式工作原理;3)针对数据进行数据建模;
2、运维层面
1)进行集群的容量规划;2)对集群进行滚动升级;3)对性能的优化;4)出现问题后,对问题的诊断与解决;
3、方案层面
1)学习ElasticSearch后,可以针对实际情况,解决搜索的相关问题;2)可以将ELK运用到大数据分析场景中;
四、ElasticSearch的主要功能与应用场景:
1、主要功能:
1)、海量数据的分布式存储以及集群管理,达到了服务与数据的高可用以及水平扩展;
2)、近实时搜索,性能卓越。对结构化、全文、地理位置等类型数据的处理;
3)、海量数据的近实时分析(聚合功能)
2、应用场景:
1)网站搜索、垂直搜索、代码搜索;
2)日志管理与分析、安全指标监控、应用性能监控、Web抓取舆情分析;
五、ElasticSearch与数据库BD集成:
针对上图,可以分为两种情况:
1、将ElasticSearch当成数据库来存储数据,好处是架构比较简单;
2、若数据更新比较频繁,同时需要考虑数据事务性时,应该先将数据存入数据库,然后建立一个合适的同步机制,将数据同步到ElasticSearch中;
日志处理: