elasticsearch

star 2

Elasticsearch distributed search and analytics engine

ffsshhttiikk By ffsshhttiikk schedule Updated 2/28/2026

name: elasticsearch description: Elasticsearch distributed search and analytics engine license: MIT compatibility: opencode metadata: audience: developers category: databases

What I do

  • Design Elasticsearch indices
  • Write complex queries
  • Use aggregations
  • Configure analyzers
  • Handle mappings
  • Optimize performance
  • Use Beats and Logstash

When to use me

When building full-text search, log analytics, or real-time applications.

Mappings

{
  "mappings": {
    "properties": {
      "title": {
        "type": "text",
        "analyzer": "english",
        "fields": {
          "keyword": {
            "type": "keyword"
          }
        }
      },
      "content": {
        "type": "text"
      },
      "author": {
        "type": "keyword"
      },
      "published_at": {
        "type": "date"
      },
      "views": {
        "type": "integer"
      },
      "tags": {
        "type": "keyword"
      },
      "location": {
        "type": "geo_point"
      }
    }
  }
}

Queries

// Match query
{
  "query": {
    "match": {
      "title": "elasticsearch guide"
    }
  }
}

// Boolean query
{
  "query": {
    "bool": {
      "must": [
        { "match": { "title": "elasticsearch" } }
      ],
      "filter": [
        { "term": { "status": "published" } }
      ],
      "should": [
        { "match": { "content": "tutorial" } }
      ],
      "must_not": [
        { "term": { "author": "banned" } }
      ]
    }
  }
}

// Multi-match
{
  "query": {
    "multi_match": {
      "query": "search engine",
      "fields": ["title^2", "content"]
    }
  }
}

// Nested query
{
  "query": {
    "nested": {
      "path": "comments",
      "query": {
        "match": { "comments.text": "great" }
      }
    }
  }
}

Aggregations

{
  "size": 0,
  "aggs": {
    "avg_views": {
      "avg": { "field": "views" }
    },
    "by_status": {
      "terms": { "field": "status" }
    },
    "by_author": {
      "terms": { "field": "author", "size": 10 }
    },
    "publish_dates": {
      "date_histogram": {
        "field": "published_at",
        "calendar_interval": "month"
      }
    }
  }
}

Ingest Pipeline

{
  "description": "Process logs",
  "processors": [
    {
      "grok": {
        "field": "message",
        "patterns": ["%{TIMESTAMP:timestamp} %{LOGLEVEL:level} %{GREEDYDATA:message}"]
      }
    },
    {
      "date": {
        "field": "timestamp",
        "formats": ["ISO8601"]
      }
    },
    {
      "lowercase": {
        "field": "level"
      }
    },
    {
      "remove": {
        "field": "timestamp"
      }
    }
  ]
}

Python Client

from elasticsearch import Elasticsearch

es = Elasticsearch(["http://localhost:9200"])

# Create index
es.indices.create(index="documents", body={
    "mappings": {
        "properties": {
            "title": {"type": "text"},
            "content": {"type": "text"},
            "date": {"type": "date"}
        }
    }
})

# Index document
es.index(index="documents", id=1, body={
    "title": "Elasticsearch Guide",
    "content": "Learn Elasticsearch",
    "date": "2024-01-01"
})

# Search
result = es.search(index="documents", body={
    "query": {
        "match": {"content": "elasticsearch"}
    }
})

for hit in result["hits"]["hits"]:
    print(hit["_source"])

Performance Tips

// Filter context over query for filters
{
  "query": {
    "bool": {
      "filter": [  // Use filter, not must
        { "term": { "status": "active" } }
      ]
    }
  }
}

// Pagination
{
  "query": { "match_all": {} },
  "from": 10000,
  "size": 10
}

// Better: search_after for deep pagination
{
  "query": { "match_all": {} },
  "search_after": ["value", "id"],
  "size": 10
}
Install via CLI
npx skills add https://github.com/ffsshhttiikk/opencode-agents-skills --skill elasticsearch
Repository Details
star Stars 2
call_split Forks 2
navigation Branch main
article Path SKILL.md
More from Creator
ffsshhttiikk
ffsshhttiikk Explore all skills →