为什么要学习 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 将会成为你未来最有竞争力的能力。

为什么不使用 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 都提供了一整套解决方案。

ElasticSearch 项目的起源是什么?

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

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

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

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

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

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

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

ElasticSearch 是什么?相关推荐

  1. Elasticsearch学习之路(一)

    一.前序 1.1正向索引和倒排索引 ** 正向索引通常用于数据库中,在搜索引擎领域使用的最多的就是倒排索引 ** 通过例子表示: 我爱编程, 我爱编程,我是小码农 1.1.1 正向索引 假设我们使用m ...

  2. 2021年大数据ELK(二十五):添加Elasticsearch数据源

    全网最详细的大数据ELK文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 添加Elasticsearch数据源 一.Kibana索引模式 添加Elast ...

  3. 2021年大数据ELK(十九):使用FileBeat采集Kafka日志到Elasticsearch

    全网最详细的大数据ELK文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 使用FileBeat采集Kafka日志到Elasticsearch 一.需求分 ...

  4. 2021年大数据ELK(十七):Elasticsearch SQL 订单统计分析案例

    全网最详细的大数据ELK文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 订单统计分析案例 一.案例介绍 二.创建索引 三.导入测试数据 四.统计不同支 ...

  5. 2021年大数据ELK(十六):Elasticsearch SQL(职位查询案例)

    全网最详细的大数据ELK文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 职位查询案例 一.查询职位索引库中的一条数据 二.将SQL转换为DSL 三.职 ...

  6. 2021年大数据ELK(十五):Elasticsearch SQL简单介绍

    全网最详细的大数据ELK文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 Elasticsearch SQL简单介绍 一.SQL与Elasticsear ...

  7. 2021年大数据ELK(十三):Elasticsearch编程(添加职位数据)

    全网最详细的大数据ELK文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 Elasticsearch编程 一.添加职位数据 1.初始化客户端连接 2.实 ...

  8. 2021年大数据ELK(十二):Elasticsearch编程(环境准备)

    全网最详细的大数据ELK文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 Elasticsearch编程 一.环境准备 1.准备IDEA项目结构 2.准 ...

  9. 2021年大数据ELK(十一):Elasticsearch架构原理

    全网最详细的大数据ELK文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 Elasticsearch架构原理 一.Elasticsearch的节点类型 ...

  10. 2021年大数据ELK(八):Elasticsearch安装IK分词器插件

    全网最详细的大数据ELK文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 系列历史文章 安装IK分词器 一.下载Elasticsearch IK分词器 ...

最新文章

  1. Andriod TextView typeface
  2. 美国五大科技巨头的人工智能竞赛
  3. Xamarin.Android 调用本地相册
  4. Acwing第 8 场周赛【未完结】
  5. ID3DXMesh的数据导出和导入
  6. Sh“.NET研究”arePoint开发笔记-SharePoint2010添加ASP.NET应用程序
  7. 日服巫术online过驱动保护分析(纯工具)(工具+自写驱动)
  8. Find 3-friendly Integers
  9. JAVA图书管理系统(JDBC,MySQL)
  10. 万字详述 MySQL ProxySQL
  11. flex bison解析json文件_每秒解析千兆字节的 JSON 解析器开源了
  12. 把discuzX 的用户登录信息添加到纯静态页面
  13. 可配置语法分析器开发纪事(二)——构造符号表
  14. 以计算机基础知识做二十张ppt,计算机基础知识教程.ppt
  15. xCodeGhost 事件专题总结
  16. MIPS计算公式总结
  17. php调用API支付接口 可个人使用,无需营业执照(使用第三方接口,调用的天工接口。)...
  18. 18c新特性——PDB snapshot Carousel 快照轮转
  19. 一个优秀的网站首页是如何设计的?
  20. 会泡妞的程序员都是怎么撩妹子的?

热门文章

  1. 用计算机如何换成音乐,电脑开机与关机音乐如何替换成自己喜欢的音乐
  2. 【华为认证-每日十题】HCNP-RS-IENP(31-40)【问】
  3. 全国、县区级行政区高程和坡度参数计算结果数据
  4. 集成OpenLDAP与Kerberos实现统一认证(一):整合后台数据库
  5. 涂子沛谢耘“大数据”东西方思维大对决
  6. 城市选择控件文本框【纯javascript打造】兼容IE6以及以上、谷歌、Firefox
  7. 蓝宝石rx580怎么超频_RX580的价格终于正常了!_蓝宝石 RX 580 8G D5 超白金 OC_游戏硬件攒机推荐-中关村在线...
  8. FinalShell高级版教程(自用)
  9. Python项目实战:Python版超市管理系统源代码
  10. arm linux死机不是崩溃,用sysrq-trigger实现ARM Linux一键内核崩溃、一键关机、一键dump信息等...