Elasticsearch 搜索分析设计
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3651d062/elasticsearch-design。
技能介绍
要解决什么问题
Elasticsearch 在生产里最容易踩坑的不是「会不会写 DSL」,而是索引与 Mapping 一旦上线就很难改:分片数不可变、字段类型选错要 reindex、动态映射把高基数字段灌爆集群。日志、商品搜索、向量检索、APM 各自对命名、滚动、ILM 和字段类型的要求也不同,单靠翻官方文档很难在一次对话里把版本差异和规范对齐。
技能如何工作
本技能在用户表达「设计索引 / 全文或向量搜索 / 日志分析建模 / ILM / 搜索优化」等意图时激活,按 Agent 设计路径推进:先做版本检查(对照 version-major 与对应大版本特性文档,提示废弃项),再落到索引命名、分片容量、Mapping 与分词器选型。
内置速查表覆盖常见决策点,例如:
- 索引命名:小写连字符、按日滚动后缀、版本号与别名
- 分片:单分片约 10–50GB、生产副本数、每 GB 堆上分片上限
- 字段:
text/keyword双字段、dense_vector、时序date等 - Mapping:
dynamic: strict或runtime、减少 norms/index、用runtime_mappings替代脚本字段
需要细节时渐进加载 references/ 下的设计规范、场景操作指引、最佳实践与业务模板,而不是一次性塞满上下文。
适用边界与注意点
- 内容以 Elastic 官方与社区实践为准,不替代你对业务 QPS、数据量、合规的评估。
- 生产环境禁止完全动态 Mapping;时序类索引应配置 ILM 或 Data Stream。
- 写入优先
_bulk;查询建议设置timeout与track_total_hits限制。 - 除非纯指标场景,避免
_source.enabled: false,否则原始文档无法补救。
使用场景
- 新业务上线前,要为商品或文档库设计首版索引:定命名规范、主分片大小、`text`+`keyword` 与中英文分词字段。
- 接入 Nginx/应用日志或 APM 链路时,需按日期滚动索引、配置 ILM 热温冷删除,并关闭生产环境的完全动态 Mapping。
- 要在现有搜索里加语义检索时,需选定 `dense_vector` 维度、是否开启向量索引,并核对与当前 ES 大版本匹配的 kNN 能力。
- 搜索 P99 变慢或集群分片数逼近节点上限时,要复核单分片容量、副本数,并为查询设置 `timeout` 与 `track_total_hits`。
适合人员
- 负责站内商品或内容检索的后端工程师,要把「可搜索 + 可聚合 + 可排序」字段拆成合规 Mapping 并写进评审文档。
- 维护日志/指标/APM 入库链路的可观测性工程师,需要统一索引命名、ILM 策略与 `dynamic: strict` 的字段白名单。
- 托管共享 Elasticsearch 集群的平台工程师,在版本升级前要对照废弃项,评估 Data Stream、向量搜索或 ES|QL 是否影响现有索引模板。
- 承接内搜、工单或知识库检索的研发,遇到「如何设计 xxx 的搜索」时,需要按步骤产出索引模板与分词器选型说明。