17611538698
webmaster@21cto.com

使用 EleasticSearch 做数据分析与报告

资讯 0 11854 2018-11-10 12:02:56

21CTO 导读:结合 Elasticsearch 和 Elastic Stack,我们一起深入了解它对大数据平台和搜索引擎的提升体验。


640.webp_.jpg

近年来,NoSQL 与大数据技术大爆发,对于开发人员来讲,跟上数据库、搜索引擎与业务分析至关重要。
 
目前市面上可用的大数据解决方案很多,比如Amazon CloudSearch,ElasticSearch,Swiftype,Algolia,Searchify,Solr 等,开发者们几乎被这些工具和解决方案淹没。
 
每个解决方案都有他的优缺点。这一次我们把注意力专注在 Elasticsearch 上面,讨论它的优点,以及搜索和用例的要点。
 
然后我再分享我自己如何利用 Elesticsearch 来创建可视化工具后生成 Web 报表。
 
现在我们就开始。
 
 

什么是 ElasticSearch


640.webp_(1)_.jpg

Elasticsearch 是目前被公认的处理结构化和非结构化数据的最佳全文搜索引擎之一。
 
它以 Apache Lucene 为底层基础,是用 Java 开发的全文搜索库。Elasticserch 是一个开源软件,它是由一群程序员和工程师维护开发的强大工具。
 
Elasticsearch 的扩展项目
 
Eleasticsearch 的每个项目都值得开发者关注。包括如下:
 
1、Beats(https://www.elastic.co/products/beats/?r=dz4)
用来将数据集中化后将数据发到 Logstash。
2、Logstash(https://www.elastic.co/products/logstash/?r=dz4
用来转换和解析来自多个源的数据传入,并将其发送到 Elastic 技术栈的核心 ElasticSearch。它正好和上面工具相反。
3、Kibana(https://www.elastic.co/products/kibana/?r=dz4
最后我们在 Kibana的帮助下,使用图表将存储的数据以可视化形式表现出来。
 
可以看到,我们使用 Elasic Stack(技术栈)进行结构化存储和非结构化存储以及聚合都非常简单。
 
下面,我们深入了解为什么使用 Elastic Search。
 
Elastic Search 的特点
 
开发者角度来看 Elastic Search 的优点:
 
1 Elastic 技术栈中的分布式数据存储与数据处理系统,可以很方便的扩展到数百台机器,能够有效节省 CPU 和内存资源;
2 使用反向索引技术和最常用的结构化查询缓存,达到快速检索数据;
3 运行时创建索引 
4 将文档划分为逻辑组的字段映射
5 对集群中的节点进行有效负载均衡并复制数据;
6 提供 RESTful API,用来实现索引的创建、读取、更新、删除和搜索操作,另外还有集群检查、服务器节点和索引运行状态检测等。
 
所有这些功能都非常有助于开发实时型平台,包括搜索和商业智能(BI)类应用程序。
 
ElasticSearch 也非常适合搜索和分析日志,帮助我们有效识别 Web 服务器或应用程序的问题。
 
ElasticSearch 支持以下类型的动态搜索
 
1 结构化数据
2 全文搜索
3 相邻匹配(它将文档视为“单词包”,不考虑单词之间的关系)
4 部分匹配
 
开发者可以把它们组合在一起,就可以实现查询的完美匹配。
 
弹性搜索数据分析
 
数据分析的第一步是定义基本目标,从索引收集与汇总数据,然后将它们导入分析工具中。
 
我的目标是根据 Elasticsearch 数据制作交互式报表。一个主需求是连接到我的索引,以便进一步汇总数据。当然,可以使用 Kibana 处理可视化大数据的挑战。
 
我需要有一个灵活方法来实时生成索引,这将有助我在Web 应用中能够生成实时的分析数据。
 
有一个工具 Flexmonster 帮了我,它用来在客户端埋点,能够生成可视化的报表组件,可以进行数据聚合、过滤和排序,并通过图表对其进行可视化。
 
结果可以用 Excel、PDF 和其它格式共享。
 
ElasticSearch 和 Pivot 报表入门
 
为了从数据中获得洞察力,需要全面了解如何使用 ElasticSearch,从 Flexmonster Privot Table 和 数据报表中建立连接。
 
配置
 
在 Elasticsearch 的官方文档指导下,我很顺利地在本地安装了 ElasticSearch,也成功连接到了服务器。
 
接下来,我在自己的应用程序的客户端部分配置了 ElasticSearch 的连接。按照软件包指南中描述的步骤,还启用了 CORS,
 
连接到索引服务器并将数据导入数据透视表,整个配置过程花了大约15分钟。整体路线图包括如下部分:
 
1、将组件嵌入到应用程序中
2、配置Elasticsearch服务器
3、建立从Flexmonster到服务器的连接
 
我已设法将数据透视表与Angular应用集成,然后连接到 Elasticsearch 实例。此外,我发现它与Elasticsearch 的数据类型兼容,包括String(Key只有这种数据类型可用于聚合和排序),Date,Numeric,Boolean,Object和Nested Object。处理业务数据时,数字和日期类型特别有用。可以将数值型字段放入度量中,而日期字段可以用作维度和度量。
 
连接到数据源后,我为报表定义了一个切片数据,将字符串和日期字段放入行和列,过滤报表,仅能查看我需要的记录。
 
举例来说,我们可以在实时演示中查看Kibana航班数据的样本。
 
小结
 
总体而言,Elasticsearch 可以开发者实现对数据复杂的查询。对我自己而言,Elastic Stack和Flexmonster为构建仪表板和执行临时分析提供了强大的组合,这些产品可以帮助我们将Web报告和数据可视化提升到一个新的水平。
 

相关链接:
Elasticsearch:入门
https://www.elastic.co/webinars/getting-started-elasticsearch
Elasticsearch:指南
https://www.elastic.co/guide/
Flexmonster数据透视表和图表快速入门
https://www.flexmonster.com/doc/how-to-create-js-pivottable


 
作者:Veronika Rovnik  
译者:海鹏
来源:https://dzone.com/articles/rep ... earch

评论