Elasticsearch的Transforms功能是一种数据处理和分析工具,用于对数据进行预处理、聚合和转换等操作,Transforms功能可以在不影响原始数据的情况下,对数据进行加工处理,更好地满足数据分析和可视化的需求。本文通过Transforms功能对投篮数据进行转换,并查看转换后的数据。
准备工作
下载样例数据。本文使用Kaggle上的数据集
NBA shot logs
,该数据集中包含投篮时间、投篮者、投篮点、最近的防守球员、最近的防守球员距离投篮者的距离等投篮数据。下载地址,请参见shot_logs.csv。创建阿里云Elasticsearch实例。具体操作,请参见创建阿里云Elasticsearch实例。本文使用7.10.0版本Elasticsearch实例。
说明暂不支持8.5版本Elasticsearch实例。
登录Kibana控制台。具体操作,请参见登录Kibana控制台。
导入数据
nba_short_logs
,并创建索引。在Kibana页面的左上角,选择
。单击Data Visualizer页签。
在Import data区域,单击Upload file。
单击图标。
选择
shot_logs
文件。在页面右下角,单击Import。
在Simple页签下,输入Index name(索引名称)为
nba_short_logs
,选中Create index pattern(创建索引)。单击Import。
数据导入成功后的界面如下图所示。
操作步骤
本文通过三种方式实现数据的转换和查看。
方法一:通过Kibana创建转换并查看数据
在Kibana页面的左上角,选择
。在左侧菜单栏,单击
。单击Create your first transform。
选择
nba_short_logs
索引。在Configuration区域,Group by选择histogram(GAME_ID),Aggregations选择DRIBBLES.sum、DRIBBLES.avg和DRIBBLES.max。
说明Group by GAME_ID:按比赛ID进行分组。
DRIBBLES.sum:每场比赛中所有球员运球的总次数。
DRIBBLES.avg:每场比赛中每个球员的平均运球次数。
DRIBBLES.max:每场比赛中运球次数最多的球员的运球次数。
在Configuration区域右下角,单击Next。
在Transform details区域,填写Transform ID和Destination index(目的地索引),然后在页面右侧单击Next。
在Create区域,单击Create and start。
说明Progress的进度条变为100%,表示创建完成。
单击Discover,查看Destination index数据。
方法二:通过API创建转换并查看数据
在Kibana页面的左上角,选择
。在Console页签中,执行以下命令,通过transform创建转换。
PUT _transform/test2_nba_shot_logs { "source": { "index": "nba_short_logs" }, "dest" : { "index" : "test2_nba_short_logs" }, "pivot": { "group_by": { "game_id": { "terms": { "field": "GAME_ID" }} }, "aggregations": { "dribbles_sum": { "sum": { "field": "DRIBBLES" }}, "dribbles_avg": { "avg": { "field": "DRIBBLES" }}, "dribbles_max": { "cardinality": { "field": "DRIBBLES" }} } } }
执行以下命令,通过preview查看转换后的数据。
POST _transform/_preview { "source": { "index": "nba_shot_logs" }, "dest" : { "index" : "test2_nba_shot_logs" }, "pivot": { "group_by": { "game_id": { "terms": { "field": "GAME_ID" }} }, "aggregations": { "dribbles_sum": { "sum": { "field": "DRIBBLES" }}, "dribbles_avg": { "avg": { "field": "DRIBBLES" }}, "dribbles_max": { "cardinality": { "field": "DRIBBLES" }} } } }
方法三:通过API创建转换并通过Discover查看数据
创建并启动Transform。
在Kibana页面的左上角,选择
。在Console页签中,执行以下命令,创建Transform。
PUT _transform/test2_nba_shot_logs { "source": { "index": "nba_short_logs" }, "dest" : { "index" : "test2_nba_short_logs" }, "pivot": { "group_by": { "game_id": { "terms": { "field": "GAME_ID" }} }, "aggregations": { "dribbles_sum": { "sum": { "field": "DRIBBLES" }}, "dribbles_avg": { "avg": { "field": "DRIBBLES" }}, "dribbles_max": { "cardinality": { "field": "DRIBBLES" }} } } }
启动Transform。
POST _transform/test2_nba_shot_logs/_start
说明Transform默认是关闭的。
创建索引模式。
说明在Discover中查看数据之前需要先创建索引模式。
在Kibana页面的左上角,选择
。在左侧菜单栏,单击
。在页面右上角,单击Create index pattern。
在Index pattern name中输入转换后的目标索引,即test2_nba_short_logs,单击Next step。
单击Create index pattern。
通过Discover查看数据。
在Kibana页面的左上角,选择
。选择转换后的目标索引,查看转换后的数据。