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頁面的左上方,選擇 。
選擇轉換後的目標索引,查看轉換後的資料。
> Kibana > Machine Learning