【最佳实践】Transforms数据透视让Elasticsearch数据更易分析

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: Transforms 使您能够从 Elasticsearch 索引中检索信息,对其进行转换并将其存储在另一个索引中。 使您能够透视数据并创建以实体为中心的索引,这些索引可以汇总实体的行为。 这会将数据组织成易于分析的格式。让我们使用Kibana示例数据来演示如何使用变换来透视和汇总数据。

image.png

准备数据

在今天的练习中,我们将以 eCommerce 订单的样本例子来做练习。
首先,准备阿里云elasticsearch 6.7 版本环境,并使用创建的账号密码登录Kibana,将数据导入到 Elasticsearch 中:

image.png
image.png

点击 Add data 按钮:

image.png

这样我们就完成了 eCommerce 数据的导入。如果您还不熟悉kibana_sample_data_ecommerce索引,请使用Kibana中的 Revenue仪表板浏览数据。 考虑一下你可能想从此电子商务数据中获得什么见解:

image.png
image.png

使用各种选项进行分组和汇总

透视数据涉及使用至少一个字段对其进行分组并应用至少一项聚合。 你可以预览转换后的数据,然后继续进行操作!

例如,你可能想按产品ID对数据进行分组,并计算每种产品的销售总数及其平均价格。 另外,你可能希望查看单个客户的行为,并计算每个客户总共花费了多少以及他们购买了多少种不同类别的产品。 或者,你可能需要考虑货币或地理位置。 转换和解释这些数据最有趣的方式是什么?

下面,我们来做一个练习。打开 Kibana:

image.png

我们点击上面的 Create your firset transform:

image.png

点击上面的 [eCommerce] Orders:

image.png

我们在上面进行一些感兴趣的项进行选择:

image.png

我们在屏幕的右方可以看到 Transform pivot preview。它显示的就像是一个表格的形式,而里面的数据是我们原始的数据里没的信息,比如它含有 products.quantity 的总和等。

我们点击当前页面的 Next 按钮:

image.png

点击上面的 Next:

image.png

我们点击上面的 Create and start 按钮:

image.png

上面的 progress 显示 transform 的进度。已经完成100%了。点击上面的红色框,我们就可以回到 Transform 的管理页面了。

image.png

在上面,它显示我们的 Transform 已经完成了。状态是 stopped。这是因为我们的数据量还不是很大的缘故。我们点击上面的向下的扩展箭头:

image.png

我们可以看到所有的转换的细节。
我们接下来到 Discover 中去查看我们最新生产的一个索引:ecommerce-customer-sales

image.png

我们选中 ecommerce-customer-sales 索引:

image.png

在上面,我们可以看到有3321个文档,而且每个文档里含有的信息如上所示。它显示了当前用户的花费信息。我们可以针对这个所以来进行搜索。这些数据在很多时候非常有用,比如在进行机器学习时,我们可以生产这样的索引,对数据进行分析。

使用 API 来完成 transform

上面我们使用了 Kibana 中的 GUI 来完成这个工作。实际上我们也可以使用 API 的方式来完成这个工作。
我们先定义一个需要被使用的 pipeline:

PUT _ingest/pipeline/add_timestamp_pipeline
{
  "description": "Adds timestamp to documents",
  "processors": [
    {
      "script": {
        "source": "ctx['@timestamp'] = new Date().getTime();"
      }
    }
  ]
}

执行上面的指令。然后执行下面的指令:

PUT _transform/ecommerce_transform
{
  "source": {
    "index": "kibana_sample_data_ecommerce",
    "query": {
      "term": {
        "geoip.continent_name": {
          "value": "Asia"
        }
      }
    }
  },
  "pivot": {
    "group_by": {
      "customer_id": {
        "terms": {
          "field": "customer_id"
        }
      }
    },
    "aggregations": {
      "max_price": {
        "max": {
          "field": "taxful_total_price"
        }
      }
    }
  },
  "description": "Maximum priced ecommerce data by customer_id in Asia",
  "dest": {
    "index": "kibana_sample_data_ecommerce_transform",
    "pipeline": "add_timestamp_pipeline"
  },
  "frequency": "5m",
  "sync": {
    "time": {
      "field": "order_date",
      "delay": "60s"
    }
  }

在上面,我们定义了一个 持续 transform,也就是说每隔5分钟的时间,它会检查最新的数据,并进行转换。这个在 frequency 里有定义。当我们执行上面的命令后,我们可以在 transform 的管理页面看到:

image.png

我们看到一个新的 Transform 已经生产,而且它是一个 continuous 的 transform。我们可以点击 Start 按钮来执行它。我们也可以使用如下的 API 来启动这个 transform:
POST _transform/ecommerce_transform/_start

当我们执行完上面的命令后,我们再次查看 transform 的管理页面:

image.png

从上面我们可以看出来这个 transform 已经被启动,而且是一种在运行的状态。我们可以点击 Stop 来停止这个 transform,如果我们不想运行的话。

由于上面的命令没有为新创建的索引 kibana_sample_data_ecommerce_transform 创建一个index pattern,我们需要自己手动来创建一个 index pattern。等我们创建完后,打开 Discover 来查看新的 transform 索引:

image.png

image.png

从上面我们可以看到有 13 个文档,这是因为我们只关心 Asia 的数据。所有的数据是以 customer_id 来分组的。它显示了这个 customer 的最大价格。在上面我们看到我们也有一个通过 pipeline 写入的当前时间。

有兴趣的开发者,可以尝试写入一个新的文档到 kibana_sample_data_ecommerce 索引,并且是 Asia 的,我们可以看看是否有多一个文档在 kibana_sample_data_ecommerce_transform 索引中。

我们可以通过如下的 API 来删除这个 transform:

POST _transform/ecommerce_transform/_stop
DELETE _transform/ecommerce_transform

声明:本文由原文作者“Elastic 中国社区布道师——刘晓国”授权转载,对未经许可擅自使用者,保留追究其法律责任的权利。
出处链接:https://elasticstack.blog.csdn.net/.


image.png

阿里云Elastic Stack】100%兼容开源ES,独有9大能力,提供免费X-pack服务(单节点价值$6000)

相关活动


更多折扣活动,请访问阿里云 Elasticsearch 官网

阿里云 Elasticsearch 商业通用版,1核2G ,SSD 20G首月免费
阿里云 Logstash 2核4G首月免费


image.png

image.png

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
18天前
|
存储 JSON 数据格式
Elasticsearch 8.X 可以按照数组下标取数据吗?
Elasticsearch 8.X 可以按照数组下标取数据吗?
20 0
|
18天前
|
存储 监控 Java
视频 | Elasticsearch 8.X 企业内训之最佳实践10 讲
视频 | Elasticsearch 8.X 企业内训之最佳实践10 讲
22 0
|
5天前
|
运维 数据挖掘 Serverless
阿里云Elasticsearch Serverless助力某电商平台公司实现商品订单数据的实时写入查询
某电商平台公司采用阿里云Elasticsearch Serverless解决方案,实现商品、订单和其他关键信息的写入和查询的实时响应。
|
6天前
|
消息中间件 存储 关系型数据库
【微服务】mysql + elasticsearch数据双写设计与实现
【微服务】mysql + elasticsearch数据双写设计与实现
|
10天前
|
canal NoSQL 关系型数据库
实时计算 Flink版产品使用合集之如何在ElasticSearch中查看同步的数据
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStreamAPI、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
16天前
|
SQL 关系型数据库 数据库
实时计算 Flink版产品使用合集之将数据写入Elasticsearch时,若Elasticsearch中的字段类型为date,对应的SQL类型应该是什么
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
17天前
|
SQL 监控 API
实时计算 Flink版产品使用合集之可以用来同步数据到 Elasticsearch(ES)吗
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
实时计算 Flink版产品使用合集之可以用来同步数据到 Elasticsearch(ES)吗
|
18天前
|
API 数据安全/隐私保护 开发者
用 Python 优雅地玩转 Elasticsearch:实用技巧与最佳实践
用 Python 优雅地玩转 Elasticsearch:实用技巧与最佳实践
32 6
|
18天前
|
存储 数据处理 索引
Elasticsearch 8.X 小技巧:使用存储脚本优化数据索引与转换过程
Elasticsearch 8.X 小技巧:使用存储脚本优化数据索引与转换过程
38 6
|
18天前
|
JSON 测试技术 数据格式
Elasticsearch 8.X 如何生成 TB 级的测试数据 ?
Elasticsearch 8.X 如何生成 TB 级的测试数据 ?
23 0

相关产品

  • 检索分析服务 Elasticsearch版