X-Pack:Elastic Graph 介绍

当我刚接触Elastic的Graph时,我对Graph的理解确实是模糊的。从字面上讲,它的意思是“图形”的意思。那个它在Elasticsearch中到底代表是什么?经过一段时间的探索,我对这个Graph有一些初步的认识。简单地说:graph代表的是数据之间的关联。这个数据可以是同一个索引或者是多个索引的。在今天的文章中,我来介绍一下graph到底是什么。

图形分析功能使您可以发现Elasticsearch索引中的项目如何关联。 您可以探索索引词之间的联系,并查看哪些联系最有意义。 从欺诈检测到推荐引擎,这在各种应用中都非常有用。

例如,图形浏览可以帮助您发现黑客所针对的网络漏洞,从而可以加固您的网站。 或者,您可以向电子商务客户提供基于图的个性化推荐。

图形分析功能提供了一个简单但功能强大的图形浏览API,以及用于Kibana的交互式图形可视化工具。 两者都可以与现有的Elasticsearch索引一起使用,您需要存储所有其他数据才能使用这些功能。

 

Graph是如何工作的?

graph API提供了另一种方法来提取和汇总有关Elasticsearch索引中的文档和术语的信息。 图实际上只是相关术语(terms)的网络。 在我们的情况下,这意味着索引中的相关术语网络。

要包含在图中的术语称为顶点。 任何两个顶点之间的关系是一个连接。 该连接总结了包含两个顶点的术语的文档。

图形顶点只是已经索引的术语 (terms)。这些连接是使用Elasticsearch聚合从运行中派生的。为了确定最有意义的连接,图形API利用Elasticsearch相关性评分。内置于Elasticsearch中以支持文本搜索的相同数据结构和相关性排名工具,使图形API可以从噪声中获得一些有用的信号,这些噪声是最相关的数据。

该基础使您可以轻松回答以下问题:

  • 人们试图入侵我的网站时有哪些共同行为?
  • 如果用户购买了这种手套,他们可能还会对哪些其他产品感兴趣?
  • Stack Overflow上的哪些人在Hadoop相关技术和Python相关技术方面都有专业知识?

但是性能呢? Elasticsearch聚合框架允许图形API作为单个超级连接快速汇总数百万个文档。它不是检索帐户A和B之间的每个银行交易,而是表示该关系的单个连接。而且,当然,此汇总过程适用于多节点集群并随着您的Elasticsearch部署而扩展。通过高级选项,您可以控制如何采样和汇总数据。您还可以设置超时,以防止图形查询对群集产生不利影响。

 

前提条件

  1. 目前这个功能需要你需要打开Elasticsearch的安全功能才可以使用。如果你还不知道如何打开Elasticsearch的安全功能,你可以参考我的文章“Elasticsearch:设置Elastic账户安全”。
  2. 另外你需接受Elastic的商业许可才可以使用这个功能。如果您还没有购买我们的商业许可,您看在我们的发行版中试用这个功能。

我们可以按照上面的步骤来试用这个功能。

当我们接受完上面的“30天试用”后,我们可以在Kibana中看到一个多出来的Graph应用。

下来我们来使用一个具体的例子来阐述Graph有什么样的用途。

例子

准备数据

在今天的例子中,我们来使用一个来自互联网上的数据。我们可以在链接下载芝加哥城市人最新的工作人员的薪水及职位表单。

这些是数据集的元数据:

  • 姓名:员工姓名
  • 姓:员工的姓
  • 部门:他工作的部门
  • 职位:工作职位
  • 年薪:年薪(美元)
  • 收入等级*:基于年收入的收入
  • 性别*:男性或女性

比如,一个员工的数据如下:

Annual Salary:	101,442
Department:	POLICE
Full or Part-Time: F
Job Titles	SERGEANT
Name:	AARON,  JEFFERY M
Salary or Hourly: Salary

当我们下载好数据之后,它是一个csv格式的文件。我们可以通过如下的方式把这个数据导入到我们的Elasticsearch之中。

我们可以把我们的索引名字叫做chicago_pay:

这样我们就创建好了我们的chicaogo_employees的索引。

在接下来的章节里,我们来使用graph来分析我们的数据。

 

利用graph来分析数据

在这一节里,我们来使用graph来找出我们这个样本数据里的所感兴趣的字段里的数据的关联。首先我们选择graph应用:

我们选择Create graph来创建一个graph:

我们选择Select a data source

我们选择chicago_employees索引作为我们的data source:

按照上面的顺序,我们点击Add fields来添加Full or Part-timeDepartment两个字段(我们可以分别定制两个字段的颜色及icon。记住我们必须选择keyword字段才可以。在供选择的字段里标识为“t”):

并点击Save保持我们的graph:

等我们保存完我们的graph后,接下来,我们在我们的搜索框中进行搜索:

我们在上面的输入框中输入Department:“POLICE"字样来加入我们的POLICE和Full or Part-Time的关系。按照同样的方法,我们可以加入更多部门的关系:

这里的线的粗细代表文档的关联的数量大小。从上面我们可以看出哪个部门的Full time的人最多 (FIRE部门),哪个部门Full time的最少 (DISABILITIES)。同时,我们可以可以看出来,针对Part-time的部门,那些是最多的,比如OEMC部门的Part-time的人是最多的。

我们可以引入更多的字段来反应它们之间的关系,比如我们加入Salary or Hourly字段,这样我们可以看出来那些人是按照年薪来发薪水的,哪些是按照小时计酬的:

从上面的图,我们可以看出来警察是按照年薪Salary来计酬的,而对于大多数的Part-time的工作人员来说,它们是按照小时来领取薪水的。

 

参考:

【1】https://www.elastic.co/guide/en/kibana/current/xpack-graph.html

相关阅读:
【1】Elasticsearch:significant terms aggregation

 

 

实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值