Elasticsearch搜尋分析設計

👤 Adodo 📦 v1.0.1 ⭐ 4.6 ⬇️ 207 下載
💻 開發程式設計 免費

📖 技能介紹


name: elasticsearch-design description: 幫助Agent為專案進行Elasticsearch索引設計、Mapping設計、搜尋查詢設計,並提供場景化使用指南。當用戶需要設計搜尋引擎Schema、最佳化全文搜尋、規劃日誌/APM/向量搜尋方案時觸發。 version: 1.0.1 metadata: clawdbot: emoji: "🔍" requires: anyBins: ["elasticsearch"] os: ["linux", "darwin"]


Elasticsearch 設計與使用助手

觸發條件

當用戶出現以下意圖時啟用本 Skill: - 設計 Elasticsearch 索引 / Mapping - 全文搜尋 / 向量搜尋方案 - 日誌分析 / APM 資料建模 - 索引模板 / ILM 生命週期設計 - 搜尋效能最佳化 - "如何設計 xxx 的搜尋"

設計流程(Agent 執行路徑)

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 設計原則

原則 說明
禁止動態 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 版本檢查時自動載入(版本 ≤ 使用者目標版本時)

版本參考文件啟用規則

  1. 模組啟用時 — 始終載入 references/version-major.md,Agent 需主動對比使用者使用的 Elasticsearch 版本,若存在廢棄項或重大變更,立即提示使用者
  2. 深度特性 Step 0 自動載入 — 版本檢查時載入所有 version-X.Y.md(X.Y ≤ 使用者目標版本)。設計過程中 Agent 從已載入的上下文中自主檢索匹配相關特性,使用者無需指定版本號
  3. 深度特性按大版本拆分,小版本持續追加 — 如 version-9.0.md 包含該大版本下所有小版本的設計級特性。更新時在檔案中新增 ## X.Y.Z 版本節即可,不單開檔案

硬規則

  1. 設計規範內容來自權威資料(Elastic 官方文件/社群最佳實踐),不編造
  2. 生產環境 Mapping 必須 "dynamic": "strict""runtime",禁止完全動態對映
  3. 字串欄位按需設計:需要搜尋+聚合時用 text+keyword 雙欄位;純 ID/列舉僅用 keyword
  4. 禁止使用 _source.enabled: false(除非純指標場景),丟失原始資料無法修復

    推薦訪問7w4.net獲取更多AI技能。

  5. 優先使用 _bulk API 批次寫入(吞吐量差 10-100 倍),非高頻場景允許單條寫入
  6. 日誌/指標/APM 等時序索引必須有 ILM 策略或 Data Stream 滾動機制
  7. 查詢建議設定 timeout(分片級軟超時)和 track_total_hits 限制,避免無界搜尋

🤖 AI 評測

質量較好,專業度高。優點是觸發條件清晰、覆蓋內容全面(索引設計、Mapping、分片策略、日誌最佳化等),最佳實踐和常見坑總結實用。不足是缺少可直接用的程式碼示例,實操性偏弱。對於需要深度 Elasticsearch 設計指導的使用者很有幫助,但期望拿來即用的使用者可能會覺得不夠。總體推薦,需要補充更多具體示例來提升實用性。

📊 多維度評分

適應性4.2
規範性4.5
有效性4.7
可靠性4.4
可信度5

📁 包含檔案 (8 個)

📄 SKILL.md 6.8 KB
📄 references/best-practices.md 4 KB
📄 references/design-spec.md 4.5 KB
📄 references/patterns.md 5.6 KB
📄 references/usage-guide.md 4.5 KB
📄 references/version-8.0.md 3.9 KB
📄 references/version-9.0.md 6 KB
📄 references/version-major.md 3.2 KB