# 如何在 Elasticsearch 實現敏捷的資料建模與管理 @ DevOpsDays 2023

<figure><img src="https://633175771-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpwoOwsYl6y1H0idaIKEb%2Fuploads%2FLqUs0BbIvcnQWkifPaIw%2F%E5%90%B3%E6%A5%A8%E6%96%87.jpg?alt=media&#x26;token=c5e39d3c-4e0b-4602-8f69-2f99926673f9" alt=""><figcaption><p>DevOpsDays Taipei 2023 工作坊滿意度調查結果</p></figcaption></figure>

## **如何在 Elasticsearch 實現敏捷的資料建模與管理**

在面對不斷變化的商業需求，敏捷快速交付價值以及选代的精神已廣泛落實在 DevOps 的實踐之中，但是在使用 Elasticsearch 處理巨量日誌或資料時，一但需求改變或是有新的資料使用需求提出時，我們的應對及管理的策略為何? 如何在 Elasticsearch 來做到最佳的實踐?

工作坊將包含以下的內容：

* 敏捷的資料建模與管理的概念簡介
* Elasticsearch Data Modeling 簡介
* 深入 Elasticsearch Data Modeling 的實作
* Schema on read 與 Schema on write 的差異與實現方式
* 事先定義好的 Data Modeling
* 動態產生的 Data Modeling
* Data Model 的选代

適合已經使用過 Elasticsearch，或至少稍微了解 Elasticsearch 的聽眾。

## **課程目標**

掌握有彈性的敏捷資料建模與管理的方法，並且透過設計好的實作案例，一步一步的學習如何在 Elasticsearch 進行實踐，掌握 Dynamic Field Mapping, Dynamic Template, Runtime Fields, Async Search 以及在 schema on read 至 schema on write 的轉換調整的方式。

## 行前準備

電腦需求

* 建議 **16GB** 以上的 RAM
* MacOS, Linux, Windows 皆可，但請不要用太舊的作業系統

操作環境需求

* Elasticsearch 8.0 以上版本
* Kibana 8.0 以上版本

這次工作坊主要會使用 Kibana 的 Dev Tools 進行操作，你有以下幾種方式，準備好這個環境：

1. **(新手推薦)** 在 <https://cloud.elastic.co> 申請一個新帳號，不用填入信用卡資訊，就可以免費試用 7 天，蠻適合這次工作坊中短期的使用。
2. 手動下載 [Elasticsearch 8.10.2](https://www.elastic.co/downloads/elasticsearch) 與 [Kibana 8.10.2](https://www.elastic.co/downloads/kibana) 壓縮檔，在本機執行。
   1. 解壓縮並啟動 Elasticsearch：執行 Elasticsearch 目錄中的 \
      `./bin/elasticsearch -E xpack.security.enabled=false` \
      `(透過參數強制關閉 Security，避免額外的 Security 設定流程。)`
   2. 解壓縮並啟動 Kibana：執行 Kibana 目錄中的 `./bin/kibana` 執行檔
   3. 請先確保 Elasticsearch 啟動後，再啟動 Kibana。
   4. 透過 <http://localhost:5601> 可以成功存取 Kibana 的網站。
3. 如果你習慣使用 Docker Container 的容器化方式來建構環境，可以使用 <https://github.com/onedoggo/devopsdays-taipei-2023-es-workshop> 準備好的環境。
   1. 先執行 `docker-compose up setup` 初始化 ES 的帳號密碼。
   2. 再執行 `docker-compose up -d` 啟動環境，
   3. 即可以 帳號 `elastic` 密碼 `changeme` 透過 <http://localhost:5601> 存取 kibana。
4. 使用你自己架設好的 Elasticsearch 與 Kibana 環境，可以存取 Kibana Dev Tools 即可。

(請不要使用 AWS OpenSearch 來操作哦! 這次工作坊是以 Elasticsearch 的功能與操作為主。)

## 投影片

{% embed url="<https://speakerdeck.com/unclejoe/ru-he-zai-elasticsearch-shi-xian-min-jie-de-zi-liao-jian-mo-yu-guan-li-at-devopsdays-taipei-2023>" %}
