本书“ Elasticsearch,Kibana,Logstash和下一代搜索引擎”

图片 嗨,habrozhiteli! 我们已经出版了有关Elastic Stack的书,供从事大量数据处理工作并希望可靠地从任何来源以任何格式提取数据以及实时搜索,分析和可视化数据的专家使用。 如果您需要对Elastic Stack在分布式计算和实时数据处理领域的工作有基本的了解,则适合您。

下面将提供有关聚合章节的书籍结构。

书籍结构


第1章“ Elastic Stack简介”介绍了Elastic Stack的主要组件,解释了它们在整体结构中的作用,描述了每个组件的用途。 本章还讨论了对使用Elasticsearch实现的分布式可伸缩搜索和分析的需求。 最后,提供了有关下载和安装Elasticsearch和Kibana的指南,以便您可以开始使用这些工具。

第2章“ Elasticsearch入门”向您介绍了Elasticsearch搜索引擎的关键原理,该引擎是Elastic Stack的基础。 您将熟悉索引,类型,节点和群集等概念。 您还将学习如何使用REST API执行基本操作。

第3章“搜索很重要”,着重介绍Elasticsearch提供的搜索方法。 您将学习文本分析,标记符,分析器和相关搜索功能的基础知识。 本章还提供了相关搜索的实际示例。

第4章“使用Elasticsearch分析数据”讨论了不同类型的聚合。 它包括一些示例,这些示例将帮助您更好地理解数据分析的原理。 您将学习如何使用不同类型的聚合-从简单到复杂,以浏览巨大的数据集。 阅读本章后,您将知道何时以及哪种聚合方式更适合使用。

第5章,日志分析,提供有关使用Logstash的需求,其体系结构,安装和配置的信息。 Elastic 5提供了一个Ingest Node工具,可以代替Logstash配置。 通过阅读本章,您将学习如何使用Elastic Ingest Node创建容器。

第6章“使用Logstash设计容器”使您对Logstash有了基本的了解,它使您可以动态地识别来自各种来源的数据,并使用选择的过滤器对其进行规范化。 您将学习如何使用各种各样的过滤器使Logstash与其他实时和近实时流处理框架相提并论,而无需编写代码。 还将向您介绍Beats平台和FileBeat组件,该组件用于从远程计算机传输日志文件(日志文件)。

第7章“在Kibana中可视化数据”介绍了如何使用Kibana可视化并令人印象深刻地呈现数据。 一个简单数据集的示例描述了几次单击即可创建可视化效果的过程。

第8章,Elastic X-Pack,讨论了Elasticsearch扩展。 到此时,您将已经学习了Elasticsearch及其用于创建数据容器的关键组件,并能够连接扩展来解决特定问题。 在本章中,您将阅读如何在Elastic Stack中安装和配置X-Pack组件,了解安全和监视的基础知识,并了解如何添加各种通知。

第9章“将Elatic堆栈投入使用”,提出了将Elastic Stack复杂系统投入商业运营的建议。 您将收到有关如何实施应用程序以及根据操作要求更改标准设置的建议。 您还将学习如何使用Elastic Cloud云服务。

第10章“创建用于分析来自传感器的数据的应用程序”介绍了创建用于分析和处理来自各种来源的数据的应用程序。 您将学习如何在Elasticsearch中建模数据,创建数据容器并在Kibana中可视化它们。 您还将学习如何有效使用X-Pack组件来确保容器的安全性和监视,接收各种事件的通知。

第11章,服务器基础结构监视,演示如何使用Elastic Stack为完全基于Elastic Stack构建的服务器和应用程序配置实时监视。 您将熟悉Beats平台的另一个组件-Metricbeat,该组件用于监视服务器/应用程序。

总和,平均值,最大值和最小值的合计


找到一个字段的总和,最小值或最大值或平均值是一个相当常见的操作。 在SQL中,用于计算总和的查询如下:

SELECT sum(downloadTotal) FROM usageReport; 

因此,将为表中的所有条目计算downloadTotal字段的总和。 为此,请遍历表中的所有记录或选定上下文中的所有记录,然后添加选定字段的值。

在Elasticsearch中,您可以使用总和编写类似的查询。

金额汇总


这是编写金额的简单汇总的方法:

 GET bigginsight/_search { "aggregations": { 1 "download_sum": { 2 "sum": { 3 "field": "downloadTotal" 4 } } }, "size": 0 5 } 

  1. 顶层的aggs或聚合应该用作聚合的包装。
  2. 为聚合命名。 在这种情况下,我们在downloadTotal字段中汇总金额,然后选择适当的名称download_sum。 你可以随便叫她。 当我们需要在响应结果中找到此特定聚合时,此字段很有用。
  3. 我们对和进行汇总,因此应用了sum元素。
  4. 我们想通过downloadTotal字段汇总条款。
  5. 指定size = 0以防止原始结果进入响应。 我们只需要聚合结果,而不需要搜索结果。 由于我们未指定任何高级查询元素,因此该查询将适用于所有文档。 响应中我们不需要未处理的文档(或搜索结果)。

答案应如下所示:

 { "took": 92, ... "hits": { "total": 242836, 1 "max_score": 0, "hits": [] }, "aggregations": { 2 "download_sum": { 3 "value": 2197438700 4 } } } 

我们将了解答案的主要参数。

  1. hits.total元素显示与请求上下文匹配的文档数。 如果未指定其他查询或过滤器,则将包括该类型或索引中的所有文档。
  2. 与请求类似,此答案放置在聚合中,以这种形式表示。
  3. 我们请求的聚合的响应称为download_sum,因此,我们将从具有相同名称的元素内的数量的聚合中获得答案。
  4. 应用累计量后显示实际值。

平均值,最大值,最小值的总计非常相似。 我们将简要考虑它们。

平均聚合


平均值汇总可找到请求上下文中所有文档的平均值:

 GET bigginsight/_search { "aggregations": { "download_average": { 1 "avg": { 2 "field": "downloadTotal" } } }, "size": 0 } 

与金额汇总的明显差异如下。

  1. 我们选择了另一个名称download_average,因此很明显,此聚合旨在计算平均值。
  2. 如上例所示,要执行的聚合类型是avg而不是sum。

响应的结构与前面小节的答案相同,但是在value字段中,我们将看到请求字段的平均值。

最小值和最大值的总计类似。

最小聚集


在整个索引/类型中找到downloadTotal字段的最小值:

 GET bigginsight/_search { "aggregations": { "download_min": { "min": { "field": "downloadTotal" } } }, "size": 0 } 

最大值汇总


在整个索引/类型中找到downloadTotal字段的最大值:

 GET bigginsight/_search { "aggregations": { "download_max": { "max": { "field": "downloadTotal" } } }, "size": 0 } 

这些是非常简单的聚合。 现在,让我们看一下统计信息和高级统计信息的更复杂的汇总。

统计和高级统计的汇总


这些聚合计算单个查询内的一些常用统计值,而无需执行其他查询。 由于统计信息是一次性计算的,因此无需多次请求,因此可以节省Elasticsearch资源。 如果您对几种类型的此类数据感兴趣,则客户端代码也将变得更加容易。 看一下统计汇总的示例。

统计汇总


统计汇总可计算一次运行的数量,平均值,最大值,最小值和文档总数:

 GET bigginsight/_search { "aggregations": { "download_stats": { "stats": { "field": "downloadTotal" } } }, "size": 0 } 

请求有关该结构的统计信息与您已经了解的其他度量标准聚合类似。 这里没有什么特别的事情。

答案应如下所示:

 { "took": 4, ..., "hits": { "total": 242836, "max_score": 0, "hits": [] }, "aggregations": { "download_stats": { "count": 242835, "min": 0, "max": 241213, "avg": 9049.102065188297, "sum": 2197438700 } } } 

如您所见,带有download_stats元素的答案包含总数,最小值,最大值,平均值和总数。 该结论非常方便,因为它减少了请求数量并简化了客户端代码。

看一看高级统计信息的汇总。

高级统计汇总


除了前一个选项外,扩展统计信息的聚合还返回更多统计信息:

 GET bigginsight/_search { "aggregations": { "download_estats": { "extended_stats": { "field": "downloadTotal" } } }, "size": 0 } 

答案将如下所示:

 { "took": 15, "timed_out": false, ..., "hits": { "total": 242836, "max_score": 0, "hits": [] }, "aggregations": { "download_estats": { "count": 242835, "min": 0, "max": 241213, "avg": 9049.102065188297, "sum": 2197438700, "sum_of_squares": 133545882701698, "variance": 468058704.9782911, "std_deviation": 21634.664429528162, "std_deviation_bounds": { "upper": 52318.43092424462, "lower": -34220.22679386803 } } } } 

在答案中,您还将获得平方和,差异,标准偏差及其边界。

功率汇聚


可以使用功率聚集来对唯一元素进行计数。 这类似于搜索查询结果,如下所示:

 select count(*) from (select distinct username from usageReport) u; 

确定特定字段的唯一值的功效或数量是一项相当常见的任务。 例如,如果您有来自网站的各种访问者的点击流(点击流),则您可能希望找出在给定的一天,一周或一个月中网站上有多少唯一身份访问者。

让我们弄清楚如何使用可用的网络流量数据查找唯一身份访问者的数量:

 GET bigginsight/_search { "aggregations": { "unique_visitors": { "cardinality": { "field": "username" } } }, "size": 0 } 

功率聚合响应看起来与其他度量聚合相同:

 { "took": 110, ..., "hits": { "total": 242836, "max_score": 0, "hits": [] }, "aggregations": { "unique_visitors": { "value": 79 } } } 

现在我们已经找到了最简单的聚合类型,我们可以考虑一些分段聚合。

关于作者


Pranav Shukla是Valens DataLabs的创始人和负责人,Valens DataLabs是一名工程师,丈夫和两个孩子的父亲。 使用基于JVM的编程语言的大数据架构师和专业程序员。 Pranav为财富500强公司和初创公司开发企业应用程序已有14年以上,他的主要专长是基于JVM,Java / Scala,Hadoop生态系统,Apache Spark和NoSQL数据库创建可伸缩的,数据驱动的应用程序。 在与大数据组织,分析和机器学习有关的领域中积极发展。

Pranav创立了Valens DataLabs,以帮助其他公司使用数据来提高竞争力。 Valens DataLabs专门创建用于处理大数据和Web技术的新一代云应用程序。 该公司的工作基于灵活实践的使用,精益制造的原理,基于测试和行为的开发,可持续软件系统的持续集成和持续部署。

Sharat Kumar M. N.拥有美国达拉斯德克萨斯大学的计算机科学硕士学位。 他已经在IT行业工作了十多年,目前担任Elasticsearch的Oracle解决方案开发商,是Elastic Stack的支持者。 他是一位狂热的演讲者,曾在包括Oracle Code Event在内的多个科学和技术会议上发表演讲。 Sharat-Elastic认证讲师(Elastic Certified Instructor)-Elastic Inc.是全球为数不多的技术专家之一 授予“来自Elastic的创建者”进行培训的正式权利。 他还是机器学习和数据科学的热心者。

关于科学编辑


Marcelo Ochoa在阿根廷中部布宜诺斯艾利斯国立大学(Provincia de la Centro de la Provincia de Buenos Aires)国立大学精确科学学院的实验室工作。 他是Scotas(www.scotas.com)的CTO,该公司专门研究使用Apache Solr和Oracle技术的伪实时解决方案。 Marcelo设法在大学工作,并参与与Oracle和大数据技术有关的项目。 在此之前,他从事数据库,Web和Java技术的研究。 在XML世界中,Marcelo被称为Apache Cocoon项目的DB Generator开发人员。 他参与创建了开放源代码项目,例如DBPrism,DBPrism CMS和Restlet.org,在那里他从事了Oracle XDB Restlet Adapter的工作,这是在JVM数据库中编写本机REST Web服务的一种替代方法。

自2006年以来,他一直参与Oracle ACE计划,并且最近加入了Docker Mentor项目。

»这本书的更多信息可以在出版商的网站上找到
» 目录
» 摘录

小贩优惠券可享受25%的折扣-Elasticsearch

支付纸质版本的书后,将通过电子邮件发送该书的电子版本。

Source: https://habr.com/ru/post/zh-CN451750/


All Articles