name: elasticsearch-design description: 幫助Agent為專案進行Elasticsearch索引設計、Mapping設計、搜尋查詢設計,並提供場景化使用指南。當用戶需要設計搜尋引擎Schema、最佳化全文搜尋、規劃日誌/APM/向量搜尋方案時觸發。 version: 1.0.1 metadata: clawdbot: emoji: "🔍" requires: anyBins: ["elasticsearch"] os: ["linux", "darwin"]
當用戶出現以下意圖時啟用本 Skill: - 設計 Elasticsearch 索引 / Mapping - 全文搜尋 / 向量搜尋方案 - 日誌分析 / APM 資料建模 - 索引模板 / ILM 生命週期設計 - 搜尋效能最佳化 - "如何設計 xxx 的搜尋"
0. 版本檢查 → 載入 references/version-major.md 對比使用者版本,識別廢棄項和重大變更。同時載入所有 version-X.Y.md(X.Y ≤ 使用者目標版本),後續設計過程中 Agent 從已載入的上下文中自主匹配深度特性
1. 需求分析 → 理解搜尋場景(全文/向量/混合/聚合)、寫入吞吐、資料量級
2. 索引設計 → 索引命名、分片數/副本數、重新整理間隔、ILM 策略
3. Mapping 設計 → 欄位型別、分詞器、動態模板、執行時欄位
4. 查詢設計 → Query DSL / ES|QL / 混合搜尋(BM25 + kNN)
5. 寫入設計 → 批次寫入、管道預處理、別名切換
6. 使用指引 → 載入 references/usage-guide.md,給出場景化操作
7. 生產建議 → 載入 references/best-practices.md,給出叢集/高可用/監控建議
8. 模板參考 → 載入 references/patterns.md,匹配業務索引模板
| 規則 | 示例 | 反例 |
|---|---|---|
格式:<專案>-<資料型別>-<時間粒度> |
app-logs-2026.06 |
logs |
| 小寫+連字元 | ecom-products-v1 |
ecom_Products_V1 |
| 按時間滾動必須帶日期字尾 | metrics-system-2026.06.09 |
固定索引名 |
| 版本字尾(別名指向當前版本) | search-products-v2(別名 search-products) |
別名混亂 |
| 維度 | 推薦值 | 說明 |
|---|---|---|
| 主分片數 | 1(優先按單分片 10-50GB 計算) | 分片數過多導致開銷,過少限制並行度 |
| 單分片大小 | 10-50GB | 超過 50GB 考慮拆分索引或增加分片 |
| 副本數 | 1(生產)/ 0(開發) | 至少 1 個副本保高可用 |
| 每 GB 堆的分片數 | ≤ 20 | 每個節點不超過 1000 個分片 |
| 型別 | 使用場景 | Mapping 示例 |
|---|---|---|
text |
全文搜尋(會分詞) | "type": "text", "analyzer": "ik_max_word" |
keyword |
精確匹配/聚合/排序 | "type": "keyword" |
long / integer |
整數 | "type": "long" |
float / double / scaled_float |
小數;金額用 scaled_float |
"type": "scaled_float", "scaling_factor": 100 |
boolean |
布林值 | "type": "boolean" |
date |
時間(ISO 8601 / epoch) | "type": "date", "format": "yyyy-MM-dd HH:mm:ss" |
geo_point |
經緯度座標 | "type": "geo_point" |
dense_vector |
向量嵌入(kNN 搜尋) | "type": "dense_vector", "dims": 1536, "index": true |
object |
巢狀 JSON 物件 | "type": "object" |
nested |
獨立索引的物件陣列 | "type": "nested" |
ip |
IP 地址 | "type": "ip" |
binary |
Base64 二進位制 | "type": "binary" |
| 原則 | 說明 |
|---|---|
| 禁止動態 Mapping 到生產 | "dynamic": "strict" 或 "runtime" |
| 字串雙欄位 | 需要搜尋+聚合時為 text+keyword;純 ID/列舉用 keyword |
| 關閉不必要的 norms/index | "norms": false、"index": false 減少儲存 |
| 避免 field explosion | flattened 型別處理高基數不可預知的 Key |
| 執行時欄位替代 Script | runtime_mappings 定義計算欄位,不佔儲存 |
| 語言/場景 | 分詞器 | 說明 |
|---|---|---|
| 中文 | ik_max_word(索引)/ ik_smart(搜尋) |
需安裝 IK 外掛 |
| 英文 | standard / english |
內建 |
| 多語言 | 獨立欄位 + 不同分詞器 | 每個語言一個 text 子欄位 |
| 拼音搜尋 | pinyin 外掛 |
中文拼音混合搜尋 |
| 不分詞 | keyword 型別 |
精確匹配用 |
詳細內容按需載入 references/:
| 主題 | 檔案 | 何時載入 |
|---|---|---|
| 索引/Mapping/欄位/分詞設計規範 | references/design-spec.md |
Step 2-3 索引和 Mapping 設計 |
| 場景化操作(建立索引/搜尋/聚合/別名/ILM) | references/usage-guide.md |
Step 6 使用指引 |
| 最佳實踐(分片/叢集/寫入/查詢/監控/運維) | references/best-practices.md |
Step 7 生產建議 |
| 業務索引模板(6類業務完整Mapping+配置) | references/patterns.md |
Step 8 模板參考 |
| 重大版本特性(廢棄/依賴變更/新模組) | references/version-major.md |
Step 0 版本檢查(模組啟用時即載入) |
| 深度版本特性 — 9.x(Workflows / ES|QL 增強 / PromQL / GPU 向量 / FIPS) | references/version-9.0.md |
Step 0 版本檢查時自動載入(版本 ≤ 使用者目標版本時) |
| 深度版本特性 — 8.x(向量搜尋 / ILM / SLM / Data Streams / ES|QL) | references/version-8.0.md |
Step 0 版本檢查時自動載入(版本 ≤ 使用者目標版本時) |
references/version-major.md,Agent 需主動對比使用者使用的 Elasticsearch 版本,若存在廢棄項或重大變更,立即提示使用者version-9.0.md 包含該大版本下所有小版本的設計級特性。更新時在檔案中新增 ## X.Y.Z 版本節即可,不單開檔案"dynamic": "strict" 或 "runtime",禁止完全動態對映text+keyword 雙欄位;純 ID/列舉僅用 keyword發現更多技能外掛,請訪問7w4.net。
_source.enabled: false(除非純指標場景),丟失原始資料無法修復_bulk API 批次寫入(吞吐量差 10-100 倍),非高頻場景允許單條寫入timeout(分片級軟超時)和 track_total_hits 限制,避免無界搜尋質量較好,專業度高。優點是觸發條件清晰、覆蓋內容全面(索引設計、Mapping、分片策略、日誌最佳化等),最佳實踐和常見坑總結實用。不足是缺少可直接用的程式碼示例,實操性偏弱。對於需要深度 Elasticsearch 設計指導的使用者很有幫助,但期望拿來即用的使用者可能會覺得不夠。總體推薦,需要補充更多具體示例來提升實用性。