iT邦幫忙

鐵人檔案

2025 iThome 鐵人賽
回列表
Software Development

用 Golang + Elasticsearch + Kubernetes 打造雲原生搜尋服務 系列

透過實作從零開始學習 Golang, Elasticsearch, Kubernetes

鐵人鍊成 | 共 30 篇文章 | 6 人訂閱 訂閱系列文 RSS系列文 團隊躺平的內捲小隊
DAY 11

Day 11 - 指標輸出:QPS / Latency

效能優化要有數字依據。Day 10 我們用 pprof 找到 LoggingMiddleware 的熱點並改善,但那是「短時間剖析」。 實務上,我們希望能長期追...

2025-09-25 ‧ 由 Shirley 分享
DAY 12

Day 12 - Elasticsearch 介面層:定義 SearchService

到目前為止,我們的 /search handler 還是直接回傳假資料。這樣不利於測試與後續演進。 今天我們要把邏輯抽離成 service 層,定義一個 Sea...

2025-09-26 ‧ 由 Shirley 分享
DAY 13

Day 13 - 整合測試:以假 ES 寫 E2E

在前幾天,我們完成了單元測試、pprof 優化,以及 SearchService 介面層。今天的目標是: 建立一個 fake Elasticsearch(假實...

2025-09-27 ‧ 由 Shirley 分享
DAY 14

Day 14 - 打通真路徑:連上本機 ES 的 smoke test

昨天我們用 fake ES 成功寫出第一個 E2E 測試。今天的目標更進一步: 啟動一個本地 Elasticsearch(Docker)並撰寫真正的 ESSea...

2025-09-28 ‧ 由 Shirley 分享
DAY 15

Day 15 - 整理專案:清理目錄、補測試、寫 README

在過去兩週,我們從 go mod init 開始,搭起專案骨架、加上測試框架、中介層、API、pprof、metrics,甚至打通本機 Elasticsearc...

2025-09-29 ‧ 由 Shirley 分享
DAY 16

Day 16 - Recap:複習 Golang 內容

我們已經一步一步從 go mod init 到 連上 Elasticsearch,完成了 Golang Phase 的基礎。今天的目標是: 回顧學到的重點,用架...

2025-09-30 ‧ 由 Shirley 分享
DAY 17

Day 17 - 安裝:Docker 單節點、固定 mapping

在 Golang Phase,我們已經寫好 SearchService 介面,並用 Fake + Smoke Test 打通基本 API 流程。接下來,我們要讓...

2025-10-01 ‧ 由 Shirley 分享
DAY 18

Day 18 - 查詢打底:`match` / `bool` / `terms`

昨天我們在本地啟動了 Elasticsearch,建立固定 mapping 並插入測試資料。今天的目標是:理解並操作 match 查詢,學會用 bool 組合條...

2025-10-02 ‧ 由 Shirley 分享
DAY 19

Day 19 - 分頁方案:換成 `search_after`

在實際搜尋系統中,分頁是必須的。Elasticsearch 預設提供 from + size,但這種方式在深度分頁時會變得非常慢。我們今天的目標是:理解 fro...

2025-10-03 ‧ 由 Shirley 分享
DAY 20

Day 20 - Bulk 匯入 5–10 萬筆 (以 Jeopardy 資料集為例)

昨天我們處理搜尋的分頁方案,避免 from+size 帶來的效能問題。接下來要做的,就是把一個「真正規模」的資料集放進 Elasticsearch,讓我們能實際...

2025-10-04 ‧ 由 Shirley 分享