ElasticSearch 是什么?

为什么要学习 ElasticSearch ?

ElasticSearch(ES)作为一款优秀的分布式搜索分析引擎,越来越受到许多互联网公司的关注,像小米、滴滴出行、携程旅游、阿里云和腾讯云等都在使用 ElasticSearch 。

最知名的应用公司就是 GitHub,它采用 ES 作为搜索引擎对代码进行搜索。虽然它是一款优秀的分布式搜索引擎,但是它强大的查询、分析、聚合能力使得它与数据库的边界越来越模糊。因此很多大公司都喜欢用 ES 作为数据库来存储日志或者其他业务数据,最常见的结合就是通过 Kafka 、 Redis 来作为数据源,logstash 进行转化,ES 对数据存储,kibana 对数据进行展示, ES+logstash+kibana(ELK)一体化的日志分析、业务指标分析。

越来越多的公司使用 ElasticSearch ,这门技术已经不仅仅是大数据工程师必须要掌握的了,ES 还提供了 Java ,python 等 API,因此 ES 将会成为 Java 工程师与 Python 工程师必不可缺的工具,灵活应用 ES 将会成为你未来最有竞争力的能力。

image-20191126213628040

为什么不使用 MySQL,Oracle 或者 Hbase

传统数据库优点是结构化查询,查询速度快、安全。但是当数据量较大时候,无论是查询还是插入都会变的十分缓慢,当然 MySQL 也可以做成分布式,但是部署以及维护成本较高。Oracle 查询速度是很快的,即使数据量较大,查询速度也不会很慢,但是有多少公司愿意负担这个费用呢?

为什么不使用 Redis 或者 Hbase 呢?

对于文档数据库,每个数据库都有其应对的需求,就 Redis 而言,Redis 更适合做缓存数据库,查询速度非常快,但是它的数据结构是键值对,不能够进行复杂的需求查询,只能给一个 key 然后返回结果。Hbase 是基于Hadoop 的数据库,它的特点是能够存储海量数据,并且扩展起来简单,因为底层是基于 HDFS 的。对于实时需求任务,以及在线分析就比较困难,不可能把所有数据都加载出来,或者写一个 MapReduce job 来进行任务分析,这样的工程是比较耗费资源的。

ES 是分布式的,并且在数据量超大的情况下其查询速度也嗖嗖的快。另外对象中无论是怎样的复杂关系,都可以用 JSON 格式表达出来,可读性较高,ES 就是以 JSON 数据格式存储数据。并且支持在线分析、实时分析。ES 是基于存储、查询、聚合分析和可视化于一体的解决方案。

什么样的数据适合存进去呢?

日志数据,一般如果程序遇到什么问题都可以通过查询日志分析来定位错误的地方,这种需求肯定是能够过关键字查询,能够在线可视化分析。这个需求就不合适放在传统数据库中,因为日志冗余大,而且涉及很多文本查询,使用传统数据库是非常不方便的,Redis 等文档数据库更不适合。ES 正好就是全文本检索系统,且是分布式的适合这个需求。另外指标数据也是适合存进去的,指标实时在线监控、报警等,ES 提供了一整套解决方案。

所以说不同的数据库或者全文检索系统都有其专门的应用场景,当涉及到实时,文本检索,数据量大,可视化分析,聚合分析的时候都可以考虑使用 ES 来作为解决方案。

ElasticSearch 能够做什么?

从数据获取,存储计算到可视化,ES 开发了一整套解决方案,Logstash 、Beat 负责数据抓取,ES 负责存储计算,kibana 对数据进行展示分析。另外还有收费的 X-Pack 可以实现安全、告警、监控和 ML 等更丰富的功能。ES 在搜索、日志分析、指标分析和安全分析等领域应用广泛。从前端到后端到数据分析,从云服务到最流行的机器学习,ES 都提供了一整套解决方案。

2019070123000674453266

ElasticSearch 项目的起源是什么?

ES 起源于一款优秀的基于 Java 开发的搜索引擎类库——Lucene。Lucene 具有高性能、易扩展的优点,但是它只是一个类库,与业务结合的比较紧密。笔者曾使用过 C# 的 Lucene.net ,当时的业务场景是对农村宅地基信息进行搜索,我那时候研究类库的使用方法,首先如何对文本分词,分词后如何建立索引……之后终于完成了一个全文搜索功能,踩了很多坑,学习曲线很陡峭。

另外如果有其他的项目也需要全文搜索功能,那你只能重新写全文搜索功能业务。全文搜索只是一个功能,不应该跟业务耦合的这么紧密,因此将这个功能单独抽离出来作为一个服务,只需要提供一个接口,就可以实现这个功能。因此出现了 Solr(Apache 开源项目),Elastic Inc(开源软件/上市公司)的 ES ,Splunk(商业上市公司)。

image-20191112212343749

图(a)是使用 Lucene 开发项目,与业务耦合紧密,不同的项目需要重新开发全文搜索功能。

图(b)是将全文搜索业务抽离出来作为一个云服务。

ElasticSearch 在互联网开发中有多火爆?多流行?

市场上存在很多搜索引擎,相对于 Java 工程师来说 Solr 应该是最为熟悉的,当然 Solr 也火爆了很多年,而 Splunk 鲜为人知些,因为它是收费的。查看最近几年搜索引擎的排名情况,可以看出,2016 年是个分水岭,2013 年到 2016 年 Solr 都远远超过 ES,但是 ES 在 2016 年之后,开始飞速的增长,以至超过 solr 跟 Splunk ,成为最受欢迎的一款搜索引擎。

伴随而来就是 ElasticSearch 相关的岗位在招聘市场中陡然大增,一度出现供不应求的现象。平均薪资水平也远高于行业内其他工种。

image-20191112213734715

image-20191112213809520

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值