![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
ElasticSearch 大数据搜索查询分析全指南
基于最新版本掌握 ElasticSearch 实际应用能力
优惠券已抵扣
余额抵扣
还需支付
¥49.90
¥99.00
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
zhupc_
徐州 中国矿业大学 目前关注计算机视觉领域,加速学习机器学习理论中....
展开
-
ElasticSearch 是什么?
为什么要学习 ElasticSearch ?ElasticSearch(ES)作为一款优秀的分布式搜索分析引擎,越来越受到许多互联网公司的关注,像小米、滴滴出行、携程旅游、阿里云和腾讯云等都在使用 ElasticSearch 。最知名的应用公司就是 GitHub,它采用 ES 作为搜索引擎对代码进行搜索。虽然它是一款优秀的分布式搜索引擎,但是它强大的查询、分析、聚合能力使得它与数据库的边界越来...原创 2020-09-22 12:20:10 · 824 阅读 · 0 评论 -
关系型数据库与 ElasticSearch 对比
基本概念对比关系型数据库,像最常见的 Mysql , SqlServer 都是属于关系型数据库,关系型数据中有这几种概念:数据库、表、行、列、Schema,还有 SQL 查询语句。以学生数据库为例,回忆一下数据库过程:建学生数据库见一个学生表配置学生字段,如名称 varchar、性别 char 等一行代表一个学生,不同的列代表这个学生不同的属性ES 也与关系型数据库如出一辙,只是...原创 2020-09-22 12:20:09 · 992 阅读 · 0 评论 -
ElasticSearch 搜索原理之倒排索引
倒排索引作用试想一下这个情景,你也记不清什么时候读过这个一段话:“老刘,老刘,食量大似牛,吃一个老母猪不抬头.”,只记得是红楼梦里面的台词,上学的时候语文老师还解读过,现在觉得特别有意思,想看看完整的这个故事。于是你买了一本《红楼梦》,打开目录,定位不同章节的位置,然后按照顺序一章一章的遍历,找找哪一章里面有这么一句话。终于经过你不懈的努力终于找到这句话来自于“刘姥姥进大观园”哪一章。这个检...原创 2020-09-22 12:20:08 · 306 阅读 · 0 评论 -
ElasticSearch 不同角色分工
节点作用ES 是一个分布式全文检索引擎,既然是分布式那一定是设计多个节点甚至多个集群。为什么需要分布式呢?试想一下,如果 ES 节点只设计成一个,那么这个节点会涉及哪些工作呢?首先该节点应该具备响应用户的读写操作该节点应该具备存储数据的能力ES应该具备协调多个用户集体请求的操作另外 ES 会自动映射用户输入的数据类型,因此ES应该具备自动映射数据类型的操作节点优化当然这些只是这个...原创 2020-09-22 12:20:06 · 591 阅读 · 0 评论 -
分片及副本原理
分片原理分片组成一个 ES 实例,这个 ES 实例可以维护一个或者多个索引(数据库)。前文提到过,ES 是基于 Lucene 开发的,实际上一个分片就是一个 Lucene 实例。在创建某个索引之前,需要指定分配这个索引多少个索引?多少个副本?副本就这这个分片的备胎,当分片挂掉了,它的副本就会随时准备上位,因此副本也是个分片只不过不负责主要功能。不仅仅如此,ES 如何能够提高数据吞吐量呢?增加...原创 2020-09-22 12:20:05 · 878 阅读 · 0 评论 -
基于 Docker 部署单节点 ElasticSearch
Docker 工具为了快速学习理解 ES ,我并不建议学员精通各种平台 ES 安装方法,有的人使用 Windows , MAC 以及 Ubuntu ,目前据我所知,在 MAC 上安装是坑最少的,其他平台安装起来比较麻烦。我也不可能在不同的平台演示安装过程,为了能够统一安装方法,以及更快的进入 ES 学习环境,我这里使用 Docker 作为安装平台。只需要傻瓜式的一步步安装 Docker 这个软件...原创 2020-09-22 12:20:03 · 674 阅读 · 0 评论 -
基于 Docker 安装 Kibana
Kibana 是 ES 的可视化分析工具,在 Kibana 上可以对 ES 中的业务数据各种聚合分析,监控等。可以把 Kibana 理解为ES的交互界面,为什么需要这个呢?这个也好理解,传统数据库基本上是没有界面的,像 Mysql 就是一个服务实例,为了操作方便市场出现了很多工具,像我最喜欢用的 SqlYog,Navicat 等。 Kibana 与 ES 交互友好,使用 Kibana 可以更...原创 2020-09-22 12:20:02 · 551 阅读 · 0 评论 -
基于 Docker 一键式部署分布式 ElasticSearch
启动步骤一共有三个步骤:在桌面或者任何地方新建一个文件夹 命名为 docker新建一个文件命名为docker-compose.yml, 注意一定要命名成docker-compose.yml把下面提供的代码粘贴复制进去,在当前目录下打开控制台输入 docker-compose up值得注意的是你一定要保证你的 Docker 是处于打开状态,否则是无法启动的。我们利用 Docker 提...原创 2020-09-22 12:20:01 · 238 阅读 · 0 评论 -
Discover 如何查看相应的业务数据
添加数据本章节我们假设电子商务订单是我们采集的业务数据,下面将会以电子商务订单为将要分析的业务数据进行分析可视化。经过本章节的学习你将能够掌握如何借助 Kibana 工具,对 ES 数据分析聚合可视化。不同的指标数据可视化方法,将会满足你在业务分析中绝大多数需求。值得注意的是,ES 中的数据都是以最常见的 JSON 数据格式存储的。首先,在打开 Kibana 后,你将看到 Kibana 提供...原创 2020-09-22 12:19:59 · 483 阅读 · 0 评论 -
如何筛选只包含某个字段的业务数据
筛选数据当选中某个索引的时候,本章选中的是 kibana_sample_data_ecommerce 索引,那么 ES 会把这个索引下的所有数据都显示出来。前面说过 ES 的索引的概念就相当于传统数据库中的某个具体数据库,在使用数据库过程最常见的需求的就是查找某个字段为某个固定的值,比如说 查找数据库中 name 字段为小明的数据,经常会这么写select * from student whe...原创 2020-09-22 12:19:58 · 622 阅读 · 0 评论 -
如何自定义的查看某个时间段的数据
筛选时间段有时不仅仅需要对字段进行筛选,对某个时间段进行筛选依旧是很常见的操作。给定需求: 查看最近一周的数据首先点击 1,在 2 出选择单位,可以选择单位为:秒、分钟、小时、每天、每周、每年 ,为起点单位,截止日期也是同样的设置方法。另外有一种更简单的常用的方式,经常在业务数据查询中被使用。这种快捷的方法,是最常用的,常用来查看最近一段时间数据状态。另外相信你也看到了柱状图,柱状图是...原创 2020-09-22 12:19:57 · 1108 阅读 · 0 评论 -
折线图绘制过程与应用场景
创建折线图折线图相信大家都不陌生,创建折线图的方式也是各种各样,excel、python、echarts.js 等各种库从前端到后端,折线图可以表示数据的一种趋势,ES 中的折线图相比于其他库的有什么优势呢?紧密与业务指标结合0 代码,工具式制作,不需要任何代码只需要按照指示一步步就可以了制作简单,不仅仅局限一个维度制作,可以根据分组分桶制作出多个维度的折线图点击创建新的可视化按...原创 2020-09-22 12:19:55 · 1153 阅读 · 0 评论 -
柱状图绘制过程与应用场景
柱状图创建柱状图一般是是用来反映数据的分布情况,查看数据的数量以及增长情况。比如说,一个同学的成绩表,不同科目为 X 轴,Y 轴是其对应的分数,制作一个柱状图能明显看到这个学生不同科目的情况,是否偏科?因此当 X 轴并不是一个连续值是离散的,这个时候你就可以选择柱状图来反映离散的数据情况。就商务订单这个数据来说,我想查看哪个用户是我的忠实用户,过去一段时间内购买次数最多,这个时候就可以用柱状图...原创 2020-09-22 12:19:54 · 1449 阅读 · 0 评论 -
饼状图绘制过程与应用场景
饼状图创建饼状图反映的是一个数据比例情况,比如说男女比例。饼状图更能让你直观的看到数据中不同类别的比例情况,而不关心数据的个数以及数据趋势走向。给定需求: 查看一周内,下单的男女比例情况,看看这个网站更受哪种性别人群的喜爱新建一个可视化,选择饼图我们依旧选择添加 X 轴,拆分切片,选择词聚合,字段选择 customer_gender ,用户性别,可以看出这个网站男女比例差不多。说实...原创 2020-09-22 12:19:52 · 1244 阅读 · 0 评论 -
热力图在数据分析中的应用
热力图作用热力图的作用就很大了,并且应用非常的广泛,我们经常把想要突出的重点用颜色重一点的来强调,其他的用浅颜色来表达,想要强调的重点就多了去了,比如说,用热力图显示金融商圈,将商家的坐标采集下来,根据坐标点进行聚类,商家比较多的地方就是金融比较繁荣的地方。下图是我百度的一张典型的热力图,这是将热力图与地图想结合,红色表达商家较多的地方,从而我们可以分析得出哪些是金融商圈。相关分析热力图的...原创 2020-09-22 12:19:51 · 7176 阅读 · 0 评论 -
主题分析之标签云图
标签云作用每个文本字段都会对该字段做一个统计,统计出哪种值在这个字段中频繁出现。就商务订单这个索引来说,想要查看不同类别大致的比例不一定非要通过饼状图来查看,也可以在 Discover 界面,点击该字段简单的看一下大致的比例。界面中显示,一共有 45 个商品记录。这种方式可以让你大致了解一下比例。除了饼状图有没有一种更直白的方式,像客户突出哪个类别是比较多的。有,那就是标签云图,将标签的个数做...原创 2020-09-22 12:19:49 · 1184 阅读 · 0 评论 -
业务分析进阶之脚本字段
脚本字段在我们设定好索引类型之后,只能根据设定好的索引字段进行索引,以电子商务为例,每条数据包含的字段有,用户名、用户的邮箱、用户性别、产品类别等可以设置为文本类型,下单时间可以设置为时间类型,价格等字段可以设置为浮点型,整型等。我们来看一下电子商务的字段类型是怎么设置的。先点击设置选择 Kibana点击索引模型选择电子商务索引我们可以看到不同的字段类型是什么样的是否可以聚合,是否...原创 2020-09-22 12:19:48 · 136 阅读 · 0 评论 -
高阶时间序列数据可视化
创建时间序列可视化时间序列数据能够反映数据随着时间变化的一种趋势,折线图虽然也能够用于时间序列数据的可视化,但是功能过于单调,Kibana 提供了一个可视化类型:时间序列,这个时间序列类型能够加入更多的功能以及满足更多的需求。新建时间序列图,如下有时间序列,指标,等多个面板可以切换,另外还有很多自定义应用,总之功能是比折线图丰富了很多,能够更容易的表达需求。趋势图分析我们想要应用这么一个...原创 2020-09-22 12:19:47 · 1191 阅读 · 0 评论 -
Timelion 在时间序列中的应用
Timelion 是细粒度的一种时间序列可视化方式,使用 Timelion 就相当于使用编程来控制时间序列可视化。 既然涉及到编程那就肯定就会有变量,我们就可以在时间序列数据可视化之前做运算处理。比如说,金钱单位换算,或者计算一阶或者二阶差分等。这么细粒度的控制时间序列可视化方法,很有必要进行学习掌握。Timelinon 创建实践是最好的学习方式,因此抛开一堆的参数,先使用 Timelion ...原创 2020-09-22 12:19:45 · 416 阅读 · 0 评论 -
Dashboard 专题数据分析可视化
创建 Dashboard我们做了这么多张图表,难道每次看都要重新制作吗?当然不是,我们制作完后,把可视化图保存下来,并命名,且可以在 dashboard 里面组合到一起,方便监控。保存可视化,且能在可视化主页找到我们保存的可视化。你可以创建一个专题仪表板,这里有电子商务的仪表板,直接点进去可以可到,它是一个可视化的集合容器。选择编辑可以删除和导入,布局新的可视化结果, 我们把我们做...原创 2020-09-22 12:19:44 · 504 阅读 · 0 评论 -
基于 Rest API 的 ElasticSearch 增删改查(1)
前面的章节主要介绍 ES 的基本概念,以及如何使用 ES+Kibana 进行业务数据的分析挖掘。本章节将涉及到如何使用ES对数据进行增删改查,传统数据库第一步就是创建数据库,然后创建表,再基于表对数据进行增删改查,ES 也是如此。前面也对传统数据库与 ES 做了简单的对比,数据库 == ES 实例,数据库表 == ES 索引,数据库 schema==mapping。7.0 之前的 ES 是这么一...原创 2020-09-22 12:19:42 · 177 阅读 · 0 评论 -
基于 Rest API 的 ElasticSearch 增删改查(2)
_serach 操作Mget 只能通过文档 id 来查询文档,如果需要其他复杂的条件查询明显不能够满足需求。ES 提供了 _search API 支持更复杂的查询。ElasticSearch 查询共分为两种方式,一种是基于 URI 查询,另一种是基于 POST 查询。第一种是 URI 查询,这种查询方式很常见,将查询条件参数与 URI 放到一起。测试数据如下,向索引 class 插入 3 条...原创 2020-09-22 12:19:41 · 96 阅读 · 0 评论 -
基于 Rest API 的 ElasticSearch 增删改查(3)
通配符查询ES 也支持通配符查询,通配符查询应用不是非常的广泛,但是这也是筛选数据的一种规则,让我们看一下如何在 ES 中使用通配符查询查找筛选数据。给定需求:查询名字前面有 xiao 的数据,星号表示零个或者多个字符。GET class/_search?q=name:xiao*问号表示一个字符,如下查询 xiaohua 这个记录。GET class/_search?q=name:x...原创 2020-09-22 12:19:40 · 99 阅读 · 0 评论 -
如何运用强大的 ElasticSearch 核心 DSL
DSL 介绍Query DSL(Domain Specific Language)又叫做查询表达式,是一种丰富的、灵活的、强大的全文本与结构化查询语言,基于 JSON 格式对数据进行检索。前面我们介绍了简单的 ES 查询,但是对于更负责的需求使用 URL 查询显得有些困难,ES 提供了 DSL 查询,使用 DSL 表达式基本上满足各种负责的业务需求,DSL 可以与数据库提供的 SQL 进行类别,...原创 2020-09-22 12:19:39 · 97 阅读 · 0 评论 -
组合查询怎么玩
查询是一个复杂过程,特别是当查询过程中有多个条件,在 ES 中当有多个条件的时候,就得使用组合查询了。组合查询是通过 bool 关键字来实现的,通过 must、must_not、should 将不同的条件组合到一起,再用 bool 包裹一下作为一个整体。用来实现各种且、非、或的条件组合。“且”条件给定需求: 查询 class 索引中姓 deng 并且年龄是 16 的学生。下面的查询...原创 2020-09-22 12:19:37 · 111 阅读 · 0 评论 -
如何根据聚合求取各种数值指标
聚合分析是非常重要的一种分析方式,因为只有把相同特征的数据聚合到一起,你才能看到问题的本质。聚合的本质其实就是一个分组的概念,比如说求解某个指标的平均值、极大值、极小值、方差等,都可以使用聚合分析来做。同样你也可以选择把数据都取回来,然后在本地统计,但是你需要考虑到网络的问题,如果数据比较多,就会一直占用 ES 资源,另外一个问题是,你本地内存是否够用、运算时间较长等问题,ES 是分布式的,性能强...原创 2020-09-22 12:19:36 · 623 阅读 · 0 评论 -
什么是深入嵌套聚合的万用套法
嵌套聚合嵌套聚合也是属于聚合分析范畴内的,嵌套聚合是指针对具体需求需要多次分桶才能完成的实现方法。给定需求: 求取男性在不同地区购买不同类型商品的均值。首先过滤条件是男性,另外是不同地区,所以我们要根据地区做分桶,其次是不同类型的商品,那么也要在地区分桶的基础上对不同类别进行分桶,再计算均值。如下的条件,我们先使用全局 filter 过滤出男性的数据,然后再根据城市名进行聚合分桶,...原创 2020-09-22 12:19:34 · 271 阅读 · 0 评论 -
优化 Query 查询效率之 Scroll 查询
如果涉及大量数据查询的话,一次性取回所有数据显得非常不可靠,一方面 ES 可能会被长时间占用,另一方面在网络连接方面也要一直保持连接状态。以查询电商商品为例,如果当用户查看商品时候,将所有数据都返回,这将会使得用户等待时间比较长,那么这么体验是非常糟糕的。在处理传统这方面的需求可以通过自定义逻辑实现分页查询,到数据库中分批取数据。ES 同样也支持分页查询。分页查询给定需求: 使用分页查...原创 2020-09-22 12:19:33 · 661 阅读 · 0 评论 -
优化聚合数据查询效率之 Partition
上节课时中介绍了对于 query 查询可以使用 Scroll 来进行优化,聚合数据有时候也会产生大量的数据,本课时将会介绍一下如何优化对聚合数据的查询。给定需求: 同一个人在不同城市消费的均值。对于这个需求要弄明白,保证同一个人就是对这个人进行一次聚合,然后再根据不同城市进行聚合,这种需求就会产生大量的聚合数据,因为人比较多。下面的语句就是先用 customer_id 作为聚合 ke...原创 2020-09-22 12:19:31 · 426 阅读 · 0 评论 -
Python Elasticsearch Client 实战
安装 Anaconda 环境如果网络条件允许可以去 Anaconda 官网下载,如果一般推荐去清华镜像下载: https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda 是一个 Python 包管理器,它不仅仅可以很方便的下载各种包,而且提前装好了经常需要用的 Python 包,使用 Anaconda 还可以做到 Pyt...原创 2020-09-22 12:19:30 · 411 阅读 · 0 评论 -
天气指标监控数据实战
假设我们使用 ES 对天气指标进行监控,天气有晴天(fine)、阴天 (cloudy)、雨天(rainy)共三种,天气温度在 -10 度到 40 度之间,城市名假设有上海、北京、广州、合肥、南京、成都、重庆、苏州、宁波、天津、南京这几个城市。加载 ES 客户端from elasticsearch import Elasticsearchfrom datetime import datetim...原创 2020-09-22 12:19:28 · 260 阅读 · 0 评论 -
天气指标数据筛选实战
上节课中介绍了对天气指标数据的采集生成,这节课中将重点介绍如何使用 Python 对 ES 开发,以天气指标数据为例。Kibana 确实也能够提供丰富的功能对天气指标数据分析,但是我们的需求是要得到分析原始结果,Kibana 分析的结果需要登录在线看,不能够被缓存下来。天气 App假设一个项目场景,开发一款手机天气 App,这款 App 数据由 ES 进行管理。假设公司在开发一个 15 天趋...原创 2020-09-22 12:19:27 · 479 阅读 · 0 评论 -
结合指标数据场景优化查询效率实战
结合 32 课,继续讨论关于优化查询效率的问题,上个课时中我们使用 es.search(dsl,index) 接口查询出了北京城市的所有天气数据,即使我们使用了 _source 字段控制了不必要的网络输出,但是我们是一次性把北京城市的数据全部都取回来了,并且使用 value_cout 字段统计了有多少条数据,然后设置 size,这里因为 size 比较小,没超过 10000 条,但是如果是上百万条...原创 2020-09-22 12:19:26 · 113 阅读 · 0 评论 -
Java Elasticsearch Client 实战
ES 也提供了 Java 的接口,Java 是目前非常火爆流行的语言,本课时将主要介绍如何使用 ES 的 Java 接口,对 ES 进行操作,我们将对 Java Rest Client 的 Java High Level Rest Client 作为开发工具进行介绍。我是使用 IDEA 社区版作为开发工具,创建了一个 Spring Boot 项目,创建细节这里不过多介绍。Maven 依赖Ma...原创 2020-09-22 12:19:24 · 561 阅读 · 0 评论 -
基于 Java 进行天气指标数据筛选实战
本课时我们将使用 ES Java 客户端实现相关的需求,以及如何使用 DSL 查询 ES。Search 查询给定需求:在天气索引中查询所有的数据,但是只返回一条。SearchRequest 是 ES 对 Search 查询的封装,使用 SearchSourceBuilder 来配置 DSL 相关的参数,这里我们只返回一条结果,size 设置为 1,索引设置为 weather*。Search...原创 2020-09-22 12:19:23 · 219 阅读 · 0 评论 -
基于Java 优化效率查询实战
在之前的课时中我们优化查询效率一共有两个方面,一是对于 query 查询,如果想要一次性取大量数据,我们选择使用 Scroll 查询。当碰到聚合数据过大时候,我们介绍了两种一种是 Partition 查询,一种是 Composite 查询。本节课中将会对以上的优化方式做一个 Java 的实现。Scroll 查询给定需求:查询天气索引中北京地区的所有数据。Java 中一切皆是对象,所以对于返回...原创 2020-09-22 12:19:21 · 379 阅读 · 0 评论 -
基于 HTTP 的 ES 请求(赠送)
本节课是个赠送课时,因为 ES 接口更新太快,有的接口很快就被过期了,另外一些读者也不想在熟悉 Java-ES 接口上投入太多时间。那么这节课时就针对如果接口过期或者不可用怎么办?想了解一个公共技术来与 ES 交互?ES 交互因为 ES 是基于 HTTP 的,所以我们可以通过 HTTP 框架直接与 ES 交互,获取数据。这样无论就可以解决接口过期,或者用公共技术不用学习 Java-ES 接口来...原创 2020-09-22 12:19:20 · 1308 阅读 · 0 评论 -
基于 ELK 天气指标监控在线实时监控案例
本节课将系统地介绍 ELK(Elasticsearch、Logstash、Kibana)在项目中的应用,各自扮演了什么样的角色,以及如何配置索引、Logstash 等。Logstash我们将用 Logstash 模拟整个天气指标数据的采集过程,首先我们将会对 Logstash 做一个简单的讲解,然后举几个例子,最后应用到天气数据采集过程中。Logstash 是一款开源优秀的数据采集工具,数据...原创 2020-09-22 12:19:18 · 261 阅读 · 0 评论 -
基于机器学习的 ElasticSearch 异常值检测案例
机器学习在当前是非常火热的一种技术,随着框架的越来越成熟,机器学习逐渐大众化,不需要你非常的精通数学领域的知识,或者阅读各种晦涩难懂的论文。现在很多算法都已经封装成成熟的 API,因此机器学习不再是算法工程师才能够掌握的技术。普通软件开发工程师也能够掌握如何去应用机器学习,当然如果是研究型的算法,还是需要专业人士来做。软件开发工程师,只需要会用、了解原理,如何解决当前项目中所遇到的问题就行了,如...原创 2020-09-22 12:19:17 · 824 阅读 · 0 评论 -
基于 MovieLens 的电影搜索案例
Elastic 提供了一款 App Search 工具,这块工具能够无缝与 ElasticSearch 结合,App Search 这款工具直接通过操作而不用开发任何页面就可以实现一个检索系统。下载链接:App Search。下载解压好之后,有以下两个地方需要做修改。这里注意,我将 App Search 安装到本地,如果你安装到其他机器,你需要指定好 elasticsearch.host 的参...原创 2020-09-22 12:19:16 · 297 阅读 · 0 评论