iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 3
1
Elastic Stack on Cloud

Elastic 30天自我修行系列 第 3

學習透過 API 進行查詢: 星星數大於2000?

經過昨天使用 Web GUI介面,快速匯入第一個JSON檔後。在 Elastic Stack on Cluod 的網頁中,翻來翻去,就是找不到新增第2個JSON資料的選項。後來查詢網路文件後,發現需要透過API才可以直接將第2個JSON檔案直接追加在第1個JSON檔案之後。想想也是,Elastic是企業級的應用,在實務狀況中,如果每天有新資料需要被匯入,不可能一直透過人機互動方式進行資料的CURD,必然是透過程式的方式進行。

查閱了一下文件,Elastic提供了好多的API,各司其職;今天就先簡單一點,瞭解如何透過 API 進行資料的查詢 (Query)。而在進行資料的查閱前,就先讓我們以關聯式資料庫的術語,來觸類旁通,瞭解 Elastic Search 中的各式術語。

  • Index 索引:
    想像成是關聯式資料庫的Database。
    在昨天上傳第一個 JSON 檔時,Elastic Stack on Cluod要求我為 Index 進行命名。我命名為:"elastic_json"。這缺乏想像力所導致的爛命名... 後續我可以再實作更改Index名稱,平常在公司一定不能這樣亂玩。

  • Fields 欄位:
    Fields:想像成是關聯式資料庫的Columns。舉例來說:昨天上傳的資料,總計有120個Fields。也像關聯式資料庫一樣,不同的Columns會有不同的資料型別。像有的資料可能是整數、日期時間、或是文字。而此處是直接由Elastic Stack on Cluod進行判斷,而資料型別自然是可以再視實際狀況進行修正

https://ithelp.ithome.com.tw/upload/images/20200903/20130033vr9gs33RIp.png

有了這最簡單的認識後,就可以開始進行 API 的查詢。如果我們今天想要查詢 elastic 在 Github 中,星星數大於2000的 repos 有幾個呢? 如果是在資料式資料庫,我們可能會這樣進行查詢

Select * from elastic_json where stargazers_count > 2000; 

我們直接透過網頁上的 API Console 進行查詢

https://ithelp.ithome.com.tw/upload/images/20200903/20130033kGMvRlT2Zz.png

此處可以看到,過濾條件 stargazers_count > 2000 的API寫作方式。

另外在 SQL 有時我們只需要聚合值,像是資料的筆數:

Select count(*) from elastic_json where stargazers_count > 2000; 

而在此處,就可以直接透過 API 回傳的資料進行判讀,星星數大於2000的有2筆資料

"total": {
      "relation": "eq",
      "value": 2
    },
    "max_score": 1
  }

官方的API文件,非常詳細。
不過對於初學者來說,可以先參考這個網頁的實例介紹進行學習 https://dzone.com/articles/23-useful-elasticsearch-example-queries 以免心生挫折...

這是我第一次學習 ElasticSearch 很多在關聯式資料庫的概念無法直接適用,需要時間進行調整。畢竟鐵人賽可是足足有30天,相信接下來一定可以把每天學習結果,由點連接成線!


上一篇
匯入 JSON 檔: Via Github API
下一篇
利用R進行查詢: 星星數大於2000?
系列文
Elastic 30天自我修行31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言