
準備資料
在今天的練習中,我們将以 eCommerce 訂單的樣本例子來做練習。
首先,準備
阿裡雲elasticsearch 6.7 版本環境,并使用建立的
賬号密碼登入Kibana,将資料導入到 Elasticsearch 中:
點選 Add data 按鈕:
這樣我們就完成了 eCommerce 資料的導入。如果您還不熟悉kibana_sample_data_ecommerce索引,請使用Kibana中的 Revenue儀表闆浏覽資料。 考慮一下你可能想從此電子商務資料中獲得什麼見解:
使用各種選項進行分組和彙總
透視資料涉及使用至少一個字段對其進行分組并應用至少一項聚合。 你可以預覽轉換後的資料,然後繼續進行操作!
例如,你可能想按産品ID對資料進行分組,并計算每種産品的銷售總數及其平均價格。 另外,你可能希望檢視單個客戶的行為,并計算每個客戶總共花費了多少以及他們購買了多少種不同類别的産品。 或者,你可能需要考慮貨币或地理位置。 轉換和解釋這些資料最有趣的方式是什麼?
下面,我們來做一個練習。打開 Kibana:
我們點選上面的 Create your firset transform:
點選上面的 [eCommerce] Orders:
我們在上面進行一些感興趣的項進行選擇:
我們在螢幕的右方可以看到 Transform pivot preview。它顯示的就像是一個表格的形式,而裡面的資料是我們原始的資料裡沒的資訊,比如它含有 products.quantity 的總和等。
我們點選目前頁面的 Next 按鈕:
點選上面的 Next:
我們點選上面的 Create and start 按鈕:
上面的 progress 顯示 transform 的進度。已經完成100%了。點選上面的紅色框,我們就可以回到 Transform 的管理頁面了。
在上面,它顯示我們的 Transform 已經完成了。狀态是 stopped。這是因為我們的資料量還不是很大的緣故。我們點選上面的向下的擴充箭頭:
我們可以看到所有的轉換的細節。
我們接下來到 Discover 中去檢視我們最新生産的一個索引:ecommerce-customer-sales
我們選中 ecommerce-customer-sales 索引:
在上面,我們可以看到有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 的管理頁面看到:
我們看到一個新的 Transform 已經生産,而且它是一個 continuous 的 transform。我們可以點選 Start 按鈕來執行它。我們也可以使用如下的 API 來啟動這個 transform:
POST _transform/ecommerce_transform/_start
當我們執行完上面的指令後,我們再次檢視 transform 的管理頁面:
從上面我們可以看出來這個 transform 已經被啟動,而且是一種在運作的狀态。我們可以點選 Stop 來停止這個 transform,如果我們不想運作的話。
由于上面的指令沒有為新建立的索引 kibana_sample_data_ecommerce_transform 建立一個index pattern,我們需要自己手動來建立一個 index pattern。等我們建立完後,打開 Discover 來檢視新的 transform 索引:
從上面我們可以看到有 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/.
【
阿裡雲Elastic Stack】100%相容開源ES,獨有9大能力,提供免費X-pack服務(單節點價值$6000)
相關活動
更多折扣活動,請
通路阿裡雲 Elasticsearch 官網 阿裡雲 Elasticsearch 商業通用版,1核2G ,SSD 20G首月免費 阿裡雲 Logstash 2核4G首月免費