agentleFS
G1JoshiG1Joshi/Agent-Skills/skills/databases/elasticsearch/SKILL.md

elasticsearch

Skill15 starsChanged 44 days agoMITView on GitHub

Expert Elasticsearch assistance covering full-text search, inverted indexes, mappings, aggregations, and cluster lifecycle. Use when building search engines, analyzing logs (ELK), or implementing autocomplete search.

5 other projects use a version of this.

Adopted by

Most recently taken up by

The file

We split this skill into the rules it gives an agent

7 rules. 0 are common, 3 are distinctive, and 4 are very specific to this project.

  • 0

    Common

    Most of the 4 edited versions we read keep these.

  • 3

    Distinctive

    This author's own choices. Worth a look.

  • 4

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Problem: Search queries fail to return relevant results due to minor typos or lack of ranking priority.

    line 80
  2. Very specific:

    Use multi_match queries with fuzziness and title field boosting (^3):

    line 83
  3. Very specific:

    Use keyword Type for Exact Matching: Use keyword fields for filtering, sorting, and aggregations.

    line 108
  4. Very specific:

    Place Filters Inside the filter Context: Filter clauses do not calculate BM25 relevancy scores and are cached automatically.

    line 109
  5. Distinctive:

    Create too many small shards: Keep shard sizes between 20GB and 50GB.

    line 115
  6. Very specific:

    Use wildcard queries with leading asterisks (*keyword): Leading wildcards force full inverted index scans.

    line 116
  7. Distinctive:

    Use Elasticsearch as a primary system-of-record database: Replicate data from primary relational databases (PostgreSQL/MySQL).

    line 117

“Common” is measured: kept by at least 6 in 10 of the 4 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Elasticsearch

Elasticsearch is a distributed search and analytics engine built on Apache Lucene. It is the heart of the ELK Stack (Elastic, Logstash, Kibana) and a leading Vector Database for AI.

When to Use

  • Enterprise Full-Text Search: Autocomplete, typo tolerance, synonyms, and relevancy ranking across millions of unstructured documents.
  • Log Analytics & SIEM (ELK Stack): Ingesting, indexing, and visualizing server logs, metrics, and security audit trails.
  • Dense Vector Semantic Search: Storing machine-learning embeddings and performing hybrid semantic + lexical search.
  • Real-Time Analytical Aggregations: Computing multi-level nested aggregations, histograms, and geolocation bounding boxes.

Quick Start

# REST API - Search for "bike"
GET /products/_search
{
  "query": {
    "match": {
      "description": "bike"
    }
  }
}

Core Concepts

Inverted Index & Tokenization Pipeline

Analyzers split text into tokens, normalize casing, apply stemming, and build inverted term-to-document indexes:

"The quick brown fox" ──Analyzer──→ ['quick', 'brown', 'fox']
Inverted Index:
  'brown' -> [Doc 1, Doc 4]
  'fox'   -> [Doc 1, Doc 2]

Query DSL (Bool, Match, Multi-Match)

Constructs rich boolean relevancy queries:

POST /products/_search
{
  "query": {
    "bool": {
      "must": [
        { "multi_match": { "query": "wireless noise cancelling", "fields": ["title^3", "description"] } }
      ],
      "filter": [
        { "term": { "in_stock": true } },
        { "range": { "price": { "lte": 350.00 } } }
      ]
    }
  },
  "aggs": {
    "popular_brands": { "terms": { "field": "brand.keyword", "size": 5 } }
  }
}

Index Lifecycle Management (ILM) & Hot-Warm-Cold Tiers

Automates moving aging indices across storage tiers to reduce infrastructure costs:

[ Hot Tier (Fast NVMe SSDs) ] ──30 Days──→ [ Warm Tier (Standard SSD) ] ──90 Days──→ [ Cold Tier / S3 Snapshot ]

Common Patterns

Multi-Match Search with Field Boosting and Fuzziness

Problem: Search queries fail to return relevant results due to minor typos or lack of ranking priority.

Solution: Use multi_match queries with fuzziness and title field boosting (^3):

POST /products/_search
{
  "query": {
    "multi_match": {
      "query": "wirless headphone",
      "fields": ["title^3", "brand^2", "description"],
      "fuzziness": "AUTO",
      "prefix_length": 2
    }
  },
  "aggs": {
    "categories": {
      "terms": { "field": "category.keyword" }
    }
  }
}

Best Practices

Do:

  • Use keyword Type for Exact Matching: Use keyword fields for filtering, sorting, and aggregations; use text for full-text search.
  • Place Filters Inside the filter Context: Filter clauses do not calculate BM25 relevancy scores and are cached automatically.
  • Implement Index Lifecycle Management (ILM): Rollover indices based on size (50GB) and age rather than arbitrary calendar dates.
  • Tune refresh_interval During Bulk Ingestion: Increase refresh_interval to 30s or -1 when streaming bulk data to boost throughput.

Don't:

  • Create too many small shards: Keep shard sizes between 20GB and 50GB; excessive small shards exhaust cluster heap memory.
  • Use wildcard queries with leading asterisks (*keyword): Leading wildcards force full inverted index scans.
  • Use Elasticsearch as a primary system-of-record database: Replicate data from primary relational databases (PostgreSQL/MySQL).

Troubleshooting

ErrorCauseSolution
circuit_breaking_exception: [parent] Data too largeJVM heap exhaustion during large aggregation or unbounded wildcard query.Increase cluster heap, reduce aggregation bucket sizes, or scale data nodes.
Cluster status is REDPrimary shards unassigned due to node failure or storage exhaustion.Check shard allocation explain API: GET /_cluster/allocation/explain.
Fielddata is disabled on text fieldsAttempting to aggregate or sort on a text field without keyword sub-field.Update query to target fieldname.keyword.

References

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.