Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
full-statck-skills avatar

Elasticsearch

  • 11 installs
  • 1 repo stars
  • Updated July 29, 2026
  • full-statck-skills/database-skills

Guides Elasticsearch work: index mappings, Query DSL, aggregations, analyzers, cluster ops, and ELK Stack log integration.

About

Provides guidance for Elasticsearch including indexing, mappings, Query DSL, aggregations, analyzers, and cluster management. A developer uses it when implementing full-text search, log/metrics analytics, or managing Elasticsearch clusters.

  • 5-step decision flow from data to search query
  • Covers vector/KNN, geo queries, and ELK Stack ingestion

Elasticsearch by the numbers

  • 11 all-time installs (skills.sh)
  • Ranked #651 of 911 Databases skills by installs in the Skillselion catalog
  • Data as of Jul 30, 2026 (Skillselion catalog sync)
npx skills add https://github.com/full-statck-skills/database-skills --skill elasticsearch

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs11
repo stars1
Last updatedJuly 29, 2026
Repositoryfull-statck-skills/database-skills

What it does

Guides Elasticsearch work: index mappings, Query DSL, aggregations, analyzers, cluster ops, and ELK Stack log integration.

Files

SKILL.mdMarkdownGitHub ↗

Elasticsearch — 分布式搜索与分析引擎

Elasticsearch 是基于 Apache Lucene 的分布式搜索和分析引擎,提供近实时的全文搜索、结构化搜索、聚合分析、地理空间查询和向量搜索能力。

Workflow — 从数据到搜索的 5 步决策流程

遇到 ES 相关需求时按以下顺序决策:

Step 1: 明确场景
├── 全文搜索?                    → Step 2
├── 结构化数据分析 (日志/指标)?   → Step 2
├── 向量/KNN 搜索?               → references/ 向量搜索
├── 地理空间查询?                 → references/ 地理查询
├── 集群运维/性能问题?             → references/ 07-cluster-ops
└── 数据管道/日志采集?             → references/ 08-elk-integration

Step 2: 设计索引 (Mapping + Analyzer)
├── 确定字段类型 (text/keyword/date/geo/nested…)
├── 选择分词器 (standard/ik/pinyin/自定义)
├── 规划主分片数 (每个分片 20-50GB), 建后不可改
└── 设置别名用于零停机重建

Step 3: 写入数据
├── Index API (单条), Bulk API (批量, 5-15MB/批)
├── _update (部分更新), _update_by_query (条件更新)
└── Logstash/Filebeat (日志采集管道)

Step 4: 构建查询
├── 全文搜索: match / multi_match / query_string
├── 精确过滤: term / terms / range / exists / bool filter
├── 复合查询: bool (must/should/filter/must_not)
├── 聚合分析: terms + avg → references/ 聚合专题
└── 排序/分页: sort / search_after (深度分页) / scroll (导出)

Step 5: 持续优化
├── 性能问题?  → Profile API + 慢查询日志
├── 数据增长?  → ILM + Rollover 自动化 (references/ 07-cluster-ops)
├── Mapping 变更? → Reindex + Alias 零停机 (examples/03)
└── 查询优化?  → filter 优先 query, 避免 script, 限制 _source

When to Use / When NOT to

✅ 使用 ES❌ 不要用 ES
全文搜索 — 商品/文章/文档关键词搜索复杂事务 — 需要 ACID/多表 JOIN, 选 PostgreSQL
日志/指标分析 — ELK Stack 日志场景键值缓存 — 简单 KV 查询, 选 Redis
搜索型应用 — 电商/知识库/文档管理强 Schema 约束 — 需要外键/触发器, 选 RDBMS
聚合/仪表盘 — 实时统计 + Kibana 可视化海量文档存储无需搜索 — 选 MongoDB
地理空间查询 — 附近的人/POI/地理围栏纯 OLAP 分析 — PB 级离线分析, 选 ClickHouse
向量搜索 — 语义相似度/RAG 检索消息队列 — 选 Kafka/Pulsar

核心原则:Elasticsearch 是搜索服务器,不是关系型数据库的替代品。

Boundary — 能力边界

✅ 完全适用⚠️ 有条件适用❌ 不适用
全文搜索、模糊搜索、相关性排序强一致性(ES 是近实时,默认 1s refresh)代替关系型数据库做核心业务存储
日志/指标聚合分析 (Kibana)秒级以下数据可见性(需调 refresh_interval)复杂 JOIN 查询(ES 有有限 nested 支持)
地理空间、自动补全、搜索建议极高写入量(需调优线程池和批量写入)ACID 事务保证
文档搜索、知识库、RAG 检索50+ 节点大集群(需专用协调节点)存储二进制大文件(存 OSS 路径)
时序数据 + ILM 滚动PB 级深度分页(需 search_after / PIT)强关联约束数据模型
向量搜索 (dense_vector + KNN)自定义分词器(需先测试分析效果)替代 Kafka 做消息队列

核心概念速查

概念ES 术语关系型 DB 类比关键说明深度参考
Index索引Table存储文档的逻辑命名空间,名称必须小写references/05
Document文档RowJSON 格式基本数据单元,不可变(update = delete+index)
Shard分片Partition水平切分单元,主分片数建后不可改,推荐 20-50GB/分片references/07
Replica副本Replica冗余副本提供高可用和读扩展,可动态调整references/07
Mapping映射Schema定义字段类型和分词配置,已有字段类型不可修改references/05
Analyzer分词器text 字段必须配置,决定搜索质量references/06

查询 DSL 速查

查询类别核心查询用途深度参考
全文查询match / match_phrase / multi_match / query_string文本分词搜索、短语匹配、多字段搜索references/01
精确查询term / terms / range / exists / idskeyword 字段精确匹配、范围过滤、存在检查references/02
复合查询bool (must/filter/should/must_not)90% 搜索需求可用 bool 实现references/02
嵌套/父子nested / has_child / has_parent对象内跨字段关联、父子关系查询references/02
地理查询geo_distance / geo_bounding_box / geo_shape附近查询、矩形区域、复杂地理形状见 geospatial 技能
向量查询knn 参数 / k-NN 插件语义相似度、RAG 检索references/05
特殊查询fuzzy / wildcard / regexp / script / percolate模糊纠错、通配符、脚本、反向搜索references/02

聚合速查

聚合类型核心聚合类似 SQL深度参考
指标聚合avg / sum / min / max / stats / cardinality / percentilesAVG / SUM / COUNT(DISTINCT) / PERCENTILEreferences/03
桶聚合terms / date_histogram / histogram / range / filtersGROUP BY / 日期分组 / 区间分组 / 过滤分组references/04
管道聚合derivative / moving_fn / bucket_script / bucket_selector环比 / 移动平均 / 子聚合计算 / HAVINGreferences/04

集群运维概述

运维领域关键要点深度参考
节点类型Master(3个专用) + Data(SSD) + Coordinating(大查询)references/07
分片管理分配/再平衡/reroute/延迟分配references/07
快照备份S3/FS/GCS 仓库, SLM 自动管理, 增量快照references/07
ILM 生命周期hot → warm → cold → frozen → delete 自动化references/07
监控命令_cluster/health, _cat/nodes, _cat/shards, hot_threadsreferences/07
安全RBAC 角色, 字段/文档级安全, TLS, API Keyreferences/07

Gotchas — 常见陷阱与反模式

#陷阱问题解决方案
1term 查询 text 字段text 被分词,找不到精确值match.keyword 子字段
2from+size 深度分页越深越慢直至 OOM (限制 10000)深翻页用 search_after,导出用 scroll/PIT
3建索引后改主分片数建后不可修改提前规划,或重建索引 (reindex)
4所有字段用 text聚合/排序报错text + keyword 多字段
5依赖动态映射时间戳被识别为 long 等生产环境显式 mapping
6嵌套对象用普通查询跨字段关联条件误匹配必须用 nested 查询
7分片过多或过少过多→管理开销大,过少→无法扩展每个分片 20-50GB
8大批量写入不做优化频繁 refresh 产生大量小段关闭 refresh (-1), Bulk API, 副本=0
9忽略 filter 缓存重复计算,性能差不需要算分的条件放 filter
10wildcard/regexp 前缀搜索不利用倒排索引,性能极差prefix 或 edge_ngram
11脚本查询滥用不可缓存,性能差,调试困难用 ingest pipeline 预处理
12集群角色不做分离Master 因 Data GC 失联专用 3 个 Master 节点
13日志索引无 ILM索引无限增长ILM 自动化滚动/压缩/删除
14忽略 ignore_abovekeyword 超长导致索引失败设置 ignore_above: 256
15在 text 字段开 fielddata内存消耗大.keyword 多字段替代

FAQ

Q1: ES 是关系型数据库的替代品吗? 不是。ES 是搜索服务器,不支持 ACID 事务、外键、复杂 JOIN。正确架构:业务数据存 RDBMS,ES 做搜索和聚合。

Q2: 数据写入后多久能查到? 近实时。写入先到 buffer,默认 1s refresh 后才可搜索。可调 refresh_interval 或加 ?refresh 参数。

Q3: text 和 keyword 字段区别? text:分词后索引,支持 match 搜索,不支持排序/聚合。keyword:完整值索引,支持 term 搜索、排序、聚合。

Q4: 主分片数为什么不能修改? 路由规则 hash(_id) % shards,修改后已有数据无法定位。变更需 reindex。

Q5: 如何选择分片数? 每个分片 20-50GB。500GB 原始数据 → 10-25 个主分片。每个节点 ≤25 分片/GB 堆内存。

Q6: ES 为什么搜索快? 倒排索引:将每个词项映射到文档列表,查找直接定位。加分片并行 + filter 缓存。

Q7: 聚合 (Aggregation) 是什么? Bucket = GROUP BY 分组,Metric = AVG/SUM/COUNT,Pipeline = 聚合结果的再分析。详见 references/03, references/04。

Q8: Green/Yellow/Red 状态? Green=全正常,Yellow=主分片正常但副本未分配,Red=主分片丢失。

Q9: 如何零停机重建索引? Alias + Reindex:创建新索引 → Reindex 数据 → 原子切换 Alias → 删除旧索引。见 examples/03。

Q10: ES 和 Solr 怎么选? ES 集群管理内置、近实时搜索 1s、聚合强大、ELK 生态完整。Solr 依赖 ZK,配置复杂。

Q11: Mapping 可以修改吗? 可新增字段,不可修改已有字段类型(如 text→keyword),需重建索引。

Q12: search_after 和 from+size 区别? from+size 深度分页 OOM(限制 10000)。search_after 基于排序值翻页,性能与深度无关。

Q13: 数据备份怎么做? Snapshot API 备份到 S3/GCS/FS。推荐 SLM 自动管理。增量快照只存变化。

Q14: 查询慢如何排查? Profile API → 慢查询日志 → filter vs query → segments 数量 → GC 日志。

Q15: ILM 能解决什么问题? 自动滚动(大小/时间阈值)、自动迁移(热→温→冷)、自动压缩、自动删除。

Keywords

elasticsearch, ES, 搜索引擎, 全文搜索, 倒排索引, Lucene, index, mapping, document, shard, replica, analyzer, ik, pinyin, 查询 DSL, match, term, bool, filter, range, multi_match, query_string, nested, geo, aggregation, 聚合, terms, date_histogram, avg, sum, cardinality, percentiles, pipeline, reindex, bulk, scroll, search_after, ILM, rollover, force_merge, alias, snapshot, cluster, ELK, Logstash, Kibana, Filebeat, KNN, dense_vector, 向量搜索, painless, ingest pipeline, RBAC, profile API, 慢查询, zero downtime

References

  • references/01-query-dsl-fulltext.md — 全文查询(match/multi_match/query_string)
  • references/02-query-dsl-term.md — 精确查询与复合查询(term/range/bool)
  • references/03-aggregations-metric.md — 指标聚合(avg/sum/stats/cardinality/percentiles)
  • references/04-aggregations-bucket.md — 桶聚合(terms/date_histogram/range)
  • references/05-mapping-types.md — 映射与字段类型详解
  • references/06-analyzers.md — 分词器(标准/IK/pinyin/自定义)
  • references/07-cluster-ops.md — 集群运维(分片/监控/快照/ILM)
  • references/08-elk-integration.md — Logstash/Filebeat/Kibana 配置
  • examples/01-fulltext-search.md — 全文搜索实战
  • examples/02-aggregation-report.md — 聚合报表实战
  • examples/03-reindex-zero-downtime.md — 零停机重建索引
  • examples/04-cluster-monitoring.md — 集群监控实战

Related skills

Databasesdatabasesanalytics

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.