mcpField
E
elasticsearch

elasticsearch

github.com/rightnow-ai数据与数据库18.2k101 次安装24 周前更新
代码仓库

关于 elasticsearch

面向 Elasticsearch 搜索与分析工作的专业技能,涵盖集群架构、查询 DSL、映射设计和性能优化,适用于搜索、日志分析与时序数据平台。

主要功能

  1. 01设计映射与索引别名
  2. 02构建 bool 查询和聚合
  3. 03配置 ILM 与数据保留
  4. 04排查集群分片分配问题
  5. 05优化搜索性能与缓存

适用场景

  1. 01构建自动补全搜索体验
  2. 02设计日志分析和时序数据平台
  3. 03执行索引迁移与零停机重建
  4. 04规划快照恢复与灾难恢复

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/rightnow-ai/openfang --skill elasticsearch

安装后在 Claude Code 中输入/elasticsearch确认已加载。

详细介绍

Elasticsearch 专家

搜索与分析专家,深谙 Elasticsearch 集群架构、查询 DSL、映射设计和性能优化。此技能为使用 Elastic stack 构建搜索体验、日志分析管道和时序数据平台提供生产级指导。

核心原则

  • 在索引数据前明确设计映射;依赖动态映射会导致字段类型冲突和索引膨胀
  • 理解 keyword 字段(精确匹配、聚合、排序)与 text 字段(使用分析器进行全文搜索)之间的区别
  • 使用索引别名实现零停机重新索引、金丝雀部署和基于时间的索引轮换
  • 将分片大小控制在 10-50 GB,以获得最佳性能;过多的小分片会浪费开销,过少的大分片则会限制并行处理能力
  • 持续监控集群健康状态(green/yellow/red),并立即调查 yellow 状态,因为这表示存在未分配的副本分片

技术

  • 使用 must(计分 AND)、filter(不计分 AND)、should(OR,带有 minimum_should_match)和 must_not(排除)子句构建 bool 查询
  • 使用 match 查询进行全文搜索,并根据分析器进行分词;使用 term 查询进行无需分析的精确 keyword 查找
  • 构建聚合:使用 terms 获取基数排名前 N 的结果,使用 date_histogram 按时间分桶,使用 nested 分析子文档,并使用 cumulative_sum 等管道聚合
  • 应用包含 hot/warm/cold/delete 阶段的索引生命周期管理(ILM)策略,以自动执行滚动和数据保留
  • 使用包含 source/dest 的 POST _reindex 进行重新索引,并在迁移期间应用脚本转换字段
  • 使用 GET _cluster/allocation/explain 检查集群分配情况,诊断分片未分配的原因
  • 使用搜索分析器 API、请求缓存和预热来调整常用查询的搜索性能

常见模式

  • 边输入边搜索:使用 search_as_you_type 字段类型,或使用 edge_ngram 分词器搭配 match_phrase_prefix 查询,实现自动补全体验
  • 父子关系:对于子文档可独立更新的一对多关系,使用 join 字段类型,避免代价高昂的嵌套文档重新索引
  • 跨集群搜索:配置远程集群,并使用 cluster:index 语法透明地查询多个 Elasticsearch 部署
  • 快照与恢复:注册快照存储库(S3、GCS 或文件系统),并使用 SLM 策略定期安排快照,以便进行灾难恢复

应避免的问题

  • 不要对带有前导通配符的 text 字段使用通配符查询,因为这会绕过倒排索引并导致扫描整个字段
  • 不要在未拆分的情况下索引大型文档(超过 100 MB),因为它们会在索引和合并期间造成内存压力
  • 不要在生产环境中将 number_of_replicas 设为 0;副本既能提高搜索吞吐量,也能提供数据冗余
  • 不要在现有索引上更新不兼容类型变更的映射;应使用正确的映射创建新索引,并重新索引数据

评论

支持 Markdown