Full-stack-skills elasticsearch
Guides Elasticsearch usage including index mapping design, query DSL (match, term, bool, aggregations), bulk indexing, cluster management, and performance tuning. Use when the user needs to implement full-text search, design index mappings, write complex search queries, or manage Elasticsearch clusters.
install
source · Clone the upstream repo
git clone https://github.com/partme-ai/full-stack-skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/partme-ai/full-stack-skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/database-skills/elasticsearch" ~/.claude/skills/partme-ai-full-stack-skills-elasticsearch && rm -rf "$T"
manifest:
skills/database-skills/elasticsearch/SKILL.mdsource content
When to use this skill
Use this skill whenever the user wants to:
- Design index mappings with analyzers and field types
- Write search queries (match, term, bool, multi_match, nested, aggregations)
- Index, update, or bulk-load documents via the REST API
- Manage clusters (shards, replicas, snapshots, upgrades)
- Integrate Elasticsearch with Kibana or Logstash (ELK stack)
How to use this skill
Workflow
- Design the mapping - Define field types, analyzers, and index settings
- Index documents - Use PUT/POST or bulk API
- Write queries - Use Query DSL with filters for caching
- Monitor and tune - Check cluster health, slow logs, and shard balance
Quick-Start Example: Create Index and Search
// Create index with mapping PUT /products { "mappings": { "properties": { "name": { "type": "text", "analyzer": "standard" }, "description": { "type": "text" }, "price": { "type": "float" }, "category": { "type": "keyword" }, "created_at": { "type": "date" } } } } // Index a document POST /products/_doc { "name": "Wireless Mouse", "description": "Ergonomic wireless mouse with USB-C receiver", "price": 29.99, "category": "electronics", "created_at": "2025-01-15" } // Search with bool query and aggregation GET /products/_search { "query": { "bool": { "must": [{ "match": { "description": "wireless" } }], "filter": [{ "range": { "price": { "lte": 50 } } }] } }, "aggs": { "by_category": { "terms": { "field": "category" } } } }
Best Practices
- Define explicit mappings - Avoid dynamic mapping in production; set
to catch errorsdynamic: strict - Use filters for exact matches - Filters are cached and faster than queries for keyword/range conditions
- Paginate with search_after - Avoid deep
/from
pagination; usesize
for large result setssearch_after - Plan shards carefully - Target 20-40 GB per shard; avoid too many small shards
- Snapshot regularly - Use snapshot/restore for backups; test restore procedures
Keywords
elasticsearch, search, index, mapping, query DSL, aggregation, 搜索引擎, 全文检索, 聚合, ELK, Kibana, bulk API, cluster