iT邦幫忙

2023 iThome 鐵人賽

DAY 1
2
Software Development

30 天學習 Elasticsearch系列 第 1

Day 01 Elasticsearch - 這是什麼?用在哪?

  • 分享至 

  • xImage
  •  

該文章同步發佈於:我的部落格

也歡迎關注我的 Facebook 以及 Instagram 接收軟體相關的資訊!

什麼是 Elasticsearch?

Elasticsearch 本身是一個開源的專案,用於大數據分析以及搜尋的引擎。

下面這張圖片是 Elasticsearch 官方的 demo 網站:

當我們輸入 az 兩個字母的時候,這些顯示的相關資料是從哪裡來的呢?你可能第一個直覺是從資料庫,對,這是一種做法。

當前端輸入某些字母時,傳送到後端,接著去資料庫搜尋相關連的資料,但這樣真的可行嗎?當資料量太大的時候,資料庫能夠應付搜尋這麼頻繁的功能嗎?

答案是不,資料庫不應該處理這樣的事情。

所以圖片中的功能是當前端輸入某些字母時,會送到 Elasticsearch 的引擎中,並返回相關的結果,以達到這樣的效果。

我們可以暫時把 Elasticsearch 理解成一個處理搜尋的引擎即可,即使它能做的事情遠遠大於 搜尋 這件事。

為什麼要學 Elasticsearch?

  1. 建立更好的搜尋功能

搜尋可以說是現代應用程式一個必備的功能,不論是電商、部落格、書店等等,都會用到搜尋這個功能。

學習 Elasticsearch 可以建構出更好的搜尋體驗,常見的資料庫,如 MySQL, PostgreSQL 等,他們的目的並不是『 專門拿來搜尋的 』,而是建立資料之間的關聯,所以才叫做關聯式資料庫。

光是這一點就很值得學習這項技術,更不用提 Elasticsearch 還能夠做到大數據的分析,搭配 Elastic Stack 全家餐做出一個圖形化的分析介面,使用官方的機器學習功能還能做到提前警告的功能。

  1. 受到市場肯定

Elasticsearch 在 DB-ENGINES 這個網站分類 Search engines 中排名第一,可以見得其備受市場的喜愛以及接受。

  1. 性能

性能也是 Elasticsearch 常常被提出來的一個優點,當資料量大到千萬級別的時候,才能感受到 Elasticsearch 和關聯性資料庫的差別,這邊建議可以自己往 MySQL 倒入 1000 萬筆資料,和 Elasticsearch 的 1000 萬筆,稍微比較看看之間關於速度上的差別。

  1. 易用性

建立一個 Elasticsearch 的服務在本地有多簡單呢?不論是要用 Docker 啟動,還是要去官網下載應用程式,這都像是你在電腦上安裝 Slack 一樣簡單,裝好了就能透過 http 的協議訪問、搜尋資料。

  1. 可擴展性

高擴展性也是 Elasticsearch 的一個大優點,我們都知道水平擴展本身並不是一件簡單的事情,要如何同步資料?確保資料的一制性,訪問節點,分配資源等等的問題都會隨著水平擴展而浮現。

這一點 Elasticsearch 提供了很多的設定讓我們可以應付各種情況,讓擴展這件事情不再是惡夢。

誰在用 Elasticsearch?

GitHub, Facebook, Netflix 都是 Elasticsearch 的使用者,尤其是 GitHub 的程式碼搜尋就是用 Elasticsearch 實現,可以想像一下如果這要用資料庫實現,那會是什麼樣的一個情況呢?

Netflix 用 Elasticsearch 搜尋電影以及電視節目也不是新聞,這部影片 就有提到 Netflix 是如何使用的。

同樣的 這部影片 則是 Facebook 的工程師們說明他們如何把這項技術應用在 Elasticsearch 之中。

好了,上述這三間公司我相信就足夠證明這項技術的實用性以及普及性。

Elasticsearch 還有證照可以考?

Elasticsearch 本身有提供認證的考試,這邊是 傳送門,這項認證不是那種中華民國丙級廚師的認證 ( 沒有歧視的意思,我自己就有,所以我知道考起來有多簡單 ),聽說考的內容都是實際要你解決某些問題,而不是選 ABCD。

要價 500 USD,而且官方有特別說重考沒有打折,所以我看這個考試應該是沒辦法一直刷一直賽,賽到過的那一種。

我自己本身也沒有認證,也不是什麼講師,單純就是學習這項技術,加上最近工作時也需要用到,就乾脆更認真地栽進去學習,而不是用用套件,隨便的 INDEX 一些 document 交差。

當然最棒的就是,希望我寫了 30 天的鐵人賽,就具備考證照的基本能力,但我猜應該是不可能,通常這種認證都需要特別地準備。

結語

這 30 天的鐵人賽會學到什麼呢?

  1. 開發環境的建立
  2. 如何搜尋以及資料的集合
  3. Elasticsearch 架構的原理
  4. 資料如何建立?
  5. 實際操作電影的搜尋功能
  6. Kibana 資料視覺化工具

我希望可以啦 😜


下一篇
Day 02 Elasticsearch - Elastic Stack 全家桶
系列文
30 天學習 Elasticsearch30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言