为什么 ES 这门技术如此重要?

在使用 ElasticSearch 进行大数据查询分析时,你有遇到过这些问题吗?

  1. 它可以处理海量数据,但它是怎么存储这些数据的?它的查询性能为什么这么快?它的数据高可用是怎么实现的?

  2. 发现查询性能差,怎么定位问题?怎么优化?

  3. 由于数据的权限分级很多,导致建模困难,不能像 log 一样导入就完事。该如何和用户权限绑定的数据进行建模?

  4. 公司大量使用 ES,但我只会安装搭建增删改查,怎么迅速破?

  5. 如何定义海量数据,或者说在什么样的数据规模的情况下,使用 ES 比较合适。对比了一下 Redis、MongoDB、Hbase,发现 ES 支持的数据量规模中等,写入的性能又较差,那为什么还要用 ES?

  6. ES 父子关系查询,有比较实践化的案例么?

  7. 怎么进行倒排索引的设计?

    ......

诸如此类的问题不仅你有,笔者我在最开始接手工作时也是抱着满肚子疑问,一边从最基础的搭环境开始,一边捧着那本《ElasticSearch 权威指南》学习怎么快速上手。

那时候视频课我也没少看,记得笔记还在家里扔着了。头天晚上学的踌躇满志,第二天转身开工干活时就发现根本无从下手,不是说那些原理我不懂,也不是说老师讲的不好,而是我所学的知识在实际业务场景中并不能找到一个快速切入点,说白了就比如我天天看财富经却依然很穷一个道理。

我到现在还记得 Leader 让我做 ES 的时候我没有任何准备,却直接让我用 ES 去完成某个需求。比如说去做一个指标监控的专题图,能够实时的了解目前指标的状态,是否正常?是否存在异常值?我感觉很困惑不知道该如何下手,我甚至不知道该去 ES 官方文档查询什么资料,怎么去分析指标?

官网的手册也只是告诉我某个功能有什么用,但是没有具体到应用场景,而且我也没有必要,也没有那么多时间去精通 ES,因为我只是想把它当做一个工具,能够快速的完成工作任务不拖后腿。上网查类似问题却发现并没有详细的案例介绍,通常都是生硬的告诉我这个是什么......

不要问我为什么 ES 工作 2 年却拥有 3 年经验,那多出来的经验值都是靠加班给熬出来的。

为什么 ES 这门技术如此重要?

如果那时候有一个能以实际工作业务所需的技能为主,辅以详细的案例开发进行讲解的教程,我想我的头发和脂肪不至于如此成反比。

也正是因为我已经过了爬坑的那段“自力更生”时期,所以我想将这么多年的经验值总结成一个更实用的专栏,它能够告诉你该怎样结合具体需求来应用 ES,能够让你快速分析在不同的场景需要下该如何使用 ES,它不是一个知识零散不系统的功能百科大全,而是在不断解决需求问题的过程中,来讲解该如何学习 ES。

在专栏《ElasticSearch 大数据搜索查询分析全指南》中,我会先介绍 ElasticSearch 的基本原理概念,对 ES 有个整体的把控。

实践是最好的学习方式,专栏之后会用 Kibana 对常见的业务需求进行分析,作为学习 ES 的开始,然后到进阶 ES 分析,对 ES 高阶的分析组件进行学习。

然后会详细介绍 ES 开发的核心部分 DSL 的详细介绍讲解,结合目前主流的开发语言,Python 与 Java 模拟工作中常见的业务进行开发分析。

为了加强对 ES 的理解,专栏最后会结合多种需求案例进行系统的学习。

为什么 ES 这门技术如此重要?
  • 本专栏采用最新的 ElasticSearch7.x 版本

    同市面上大部分的 ElasticSearch6.x 教程相比较,7 版本更新改动很大,比如新增 KQL(Kibana Query Language),内部索引类型限定为 _doc ,还是 ES for python API  接口的改变等。

    众所周知,在技术更新如此快的年代,掌握最新的技术就能够在未来使用它的时候不会那么快就被淘汰。比如从 Java 的 iBatis 到 MyBatis ,从 Struts2 到 Spring MVC 再到 Spring Boot 。虽然你不能够停止学习的脚步,但是你可以选择插队学习,弯道超越,直接学习最新的最流行的技术,这样就比别人更领先一步。

  • 本专栏将针对 ES  在业务中的核心概念进行解析,让你不仅明白为什么使用它还能了解该怎样选择。

    ES 作为目前大数据方向必须掌握的技能,主要是作为工具分析挖掘业务数据,因此专栏会有大量的实践案例,涵盖了工作中常见的业务场景,无论你是初入职场的小白,还是即将毕业的学生党,专栏能够给你提供各种实践操作,手把手带你玩转起 ES 。而且我也将在专栏里针对大厂面试中常见的问题给出正确的解答思路。

  • 本专栏将介绍在 Java 和 Python 框架下如何运用 ElasticSearch。

    本专栏讲究变学边做,把学的到东西能够立即投入到公司实际业务中,所以会介绍如何在 Python 与 Java 框架下使用 ES。同时,比如制作业务分析表、Dashboard、检测异常值、筛选数据、分组统计数据等功能,本专栏中不会单纯贴几个 Demo,而是会以一个更系统的案例来演示。

  • 专栏将针对 ES 的重要搜索功能 DSL 进行业务分析。

    DSL 之于 ES 的重要性不言而喻,就相当于 SQL 对于传统数据库而言。关于如何使用 DSL,对查询效率较差语句如何进行提高查询效率,本专栏将针对 DSL 的查询结合不同的业务需求进行实现,从简单到深入一步步理解 DSL 。

  • 专栏前部分偏重理论,后部分偏实践。

    实践是检验真理的唯一标准,职场中讲究的是效率,先把工具用起来,当使用一段时间后,再去理解不同的概念,相信你会有醍醐灌顶的感觉。就像在大学里上关于数据库的课,老师会先让你做个学生数据库,在慢慢告诉你什么是索引、表连接、范式等。

  • 丰富的图片展示进行原理和案例讲解。

    为什么 ES 这门技术如此重要?
    ???? 如何查看相应数据
    为什么 ES 这门技术如此重要?
    ???? 如何范围查询
    为什么 ES 这门技术如此重要?
    ???? 饼状图开发案例
    为什么 ES 这门技术如此重要?
    ???? 数据可视化案例

专栏目录

一、ElasticSearch 基本原理与环境搭建

  1. 关系型数据库与 ElasticSearch 对比

  2. ElasticSearch 搜索原理之倒排索引

  3. ElasticSearch 不同角色分工

  4. 分片及副本原理

  5. 基于 Docker 部署单节点 ElasticSearch

  6. 基于 Docker 安装 Kibana

  7. 基于 Docker 一键式部署分布式 ElasticSearch

二、运用 ElasticSearch 做业务分析

  1. Discover 如何查看相应的业务数据

  2. 如何筛选只包含某个字段的业务数据

  3. 如何自定义的查看某个时间段的数据

  4. 折线图绘制过程与应用场景

  5. 柱状图绘制过程与应用场景

  6. 饼状图绘制过程与应用场景

三、ElasticSearch 高级数据分析可视化

  1. 热力图在数据分析中的应用

  2. 主题分析之标签云图

  3. 业务分析进阶之脚本字段

  4. 高阶时间序列数据可视化

  5. Timelion 在时间序列中的应用

  6. Dashboard 专题数据分析可视化

四、深入理解 ElasticSearch 之搜索

  1. 基于 Rest API 的 ElasticSearch 增删改查(1)

  2. 基于 Rest API 的 ElasticSearch 增删改查((2)

  3. 基于 Rest API 的 ElasticSearch 增删改查(3)

  4. 如何运用强大的 ElasticSearch 核心 DSL

  5. 组合查询怎么玩

  6. 如何根据聚合求取各种数值指标

  7. 什么是深入嵌套聚合的万用套法

  8. 优化 Query 查询效率之 Scroll 查询

  9. 优化聚合数据查询效率之 Partition

五、基于 Python/Java 开发案例解析

  1. Python Elasticsearch Client 实战

  2. 天气指标监控数据实战

  3. 天气指标数据筛选实战

  4. 结合指标数据场景优化查询效率实战

  5. Java Elasticsearch Client 实战

  6. 基于 Java 进行天气指标数据筛选实战

  7. 基于Java 优化效率查询

六、ElasticSearch 实战业务案例上手

  1. 基于 ELK 天气指标监控在线实时监控案例

  2. 基于机器学习的 ElasticSearch 异常值检测案例

  3. 基于 MovieLens 的电影搜索案例

为什么 ES 这门技术如此重要?
专栏大纲

为什么 ES 这门技术如此重要?

现在订阅即享 6 折,还能进群与作者交流

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

为什么 ES 这门技术如此重要?

而且,ElasticSearch 目前在搜索引擎领域霸居首位,数据库领域的综合排名位列第 7 ,属于优质潜力股。市场对其的认可度一直在高升,属于供不应求的黄金阶段。

为什么 ES 这门技术如此重要?

ElasticSearch 能够做什么?

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

为什么 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 特性运用

  • ElasticSearch 业务核心技能 比如 Kibana 业务分析方法,这些方法将会满足绝大多数公司需求,饼图,折线图,柱状图,聚合分析,分桶等。

  • ElasticSearch 大数据搜索分析高级玩法 比如 DSL 查询语法的基础与高级用法,了解如何使用 DSL 为全文检索服务,了解如何把 ES 当做数据库,使用 DSL 实现各种 SQL 操作。

  • Java 和 Python 框架下如何运用 ElasticSearch

  • ElasticSearch 环境部署和搭建 比如集群搭建,了解分片,实例,节点角色概念,什么是倒排索引,对 ES 有个整体的把握。

适读人群

  • ElasticSearch 爱好者,对 ES 有强烈的好奇心

  • 大数据工程师,Java/Python/ES 运维工程师,数据分析与挖掘工程师

  • 初入职场的或者即将找工作面试的同学

  • 急需 ES 解决当前公司的业务需求

为什么 ES 这门技术如此重要?

现在订阅即享 6 折,还能进群与作者交流