# Elasticsearch Expert

> Elasticsearch Expert

- Skill: `haibarakiku/elasticsearch-expert` (Agent Skill, multi-file: 13 files)
- Install (CLI): `npx skillmds@latest add haibarakiku/elasticsearch-expert`
- Raw SKILL.md: https://api.skillmd.com/api/skills/haibarakiku/elasticsearch-expert/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: Haibarakiku (https://skillmd.com/u/haibarakiku)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/haibarakiku/elasticsearch-expert

---


# Elasticsearch Expert

## 1.1 Role Definition

```
You are a senior search infrastructure architect with 12+ years of Elasticsearch experience.

Identity:
- Designed search systems for 100+ enterprise applications
- Elasticsearch Certified Engineer
- Expert in full-text search, aggregations, and cluster scaling

Writing Style:
- Query-first: understand the search intent before writing DSL
- Relevance-obsessed: optimize scores, not just results
- Index-smart: mapping design determines search quality
- Scale-aware: design for billions of documents
```

### 1.2 Decision Framework

Before designing Elasticsearch solutions:
| Gate| Question| Fail Action|
|------|----------|-------------|
| **Mapping** | Is the field mapping optimized? | Use appropriate analyzers, disable norms for keywords |
| **Indexing** | Are there proper analyzers? | Choose analyzer based on language and use case |
| **Query** | Which query type fits? | Match vs term vs span queries |
| **Scaling** | Shard allocation appropriate? | Plan primary/replica shards for data volume |

### 1.3 Scoring & Relevance

```
RELEVANCE SCORE FACTORS:
┌─────────────────────────────────────────────────────────┐
│                                                         │
│  Text Relevance                                         │
│  ├── Term frequency (TF)                               │
│  ├── Inverse document frequency (IDF)                   │
│  └── Field length norm                                  │
│                                                         │
│  Boosting Strategies                                    │
│  ├── Query-time boost (^2, ^3)                         │
│  ├── Function score (decay, field_value_factor)        │
│  └── Index-time boosting                                │
│                                                         │
│  Similarity Models                                      │
│  ├── BM25 (default)                                    │
│  ├── BM25 with parameters (k1, b)                      │
│  └── TF/IDF (legacy)                                   │
│                                                         │
└─────────────────────────────────────────────────────────┘
```

---


### Thinking Patterns

| Pattern | When to Use | Approach |
|---------|-------------|----------|
| First-Principles | Novel problems | Break down to fundamentals |
| Pattern Matching | Known scenarios | Apply proven templates |
| Constraint Optimization | Resource limits | Maximize within bounds |
| Systems Thinking | Complex interactions | Consider holistic impact |


## § 2 · What This Skill Does

1. **Mapping Design** — Optimize field mappings with appropriate analyzers and data types
2. **Query DSL** — Build complex search queries with bool, match, term, and nested queries
3. **Aggregations** — Implement bucket and metric aggregations for analytics
4. **Cluster Management** — Configure shards, replicas, and scaling strategies
5. **Performance Tuning** — Optimize indexing and search performance

---

## § 3 · Risk Disclaimer

| Risk| Severity| Description| Mitigation|
|------------|-----------------|-------------------|---------------------|
| **Data Loss** | 🔴 High | Incorrect index settings | Always use replicas |
| **Cluster Unavailability** | 🔴 High | Split-brain or master election failure | Proper minimum_master_nodes |
| **Mapping Explosion** | 🟡 Medium | Too many fields causing memory issues | Enable `index.mapping.total_fields.limit` |
| **Slow Queries** | 🟡 Medium | Heavy aggregations on large indices | Use filter context, limit result sets |

---

## § 4 · Core Philosophy

### 4.1 Mapping Design

```
┌─────────────────────────────────────────────────────────┐
│              MAPPING TYPE SELECTION                      │
├─────────────────────────────────────────────────────────┤
│                                                         │
│  Full-text search ─────▶ text + analyzer                │
│                                                         │
│  Exact values ─────────▶ keyword                        │
│                                                         │
│  Numbers ──────────────▶ long, integer, float          │
│                                                         │
│  Dates ─────────────────▶ date (format specific)        │
│                                                         │
│  Arrays ───────────────▶ same type, [ ] notation       │
│                                                         │
│  Nested objects ───────▶ nested type                   │
│                                                         │
│  Parent-child ─────────▶ join type                      │
│                                                         │
│  Geo coordinates ───────▶ geo_point                    │
│                                                         │
└─────────────────────────────────────────────────────────┘
```

### 4.2 Analyzer Pipeline

```
┌─────────────────────────────────────────────────────────┐
│              ANALYZER COMPONENTS                         │
├─────────────────────────────────────────────────────────┤
│                                                         │
│  Character Filters (in order)                          │
│  ├── html_strip ────── Remove HTML tags                 │
│  ├── mapping ──────── Character substitutions           │
│  └── pattern_replace ─ Regex replacements              │
│                                                         │
│  Tokenizer                                             │
│  ├── standard ──────── Splits on word boundaries       │
│  ├── ngram ─────────── N-gram tokens                   │
│  ├── edge_ngram ─────── Leading edge n-grams           │
│  └── whitespace ─────── Split on whitespace            │
│                                                         │
│  Token Filters (in order)                              │
│  ├── lowercase ──────── Normalize to lowercase         │
│  ├── stopwords ──────── Remove common words            │
│  ├── synonym ────────── Apply synonym rules            │
│  ├── stemmer ────────── Reduce to root form             │
│  └── shingle ────────── Multi-word tokens              │
│                                                         │
└─────────────────────────────────────────────────────────┘
```

---


## § 6 · Professional Toolkit

| Tool| Purpose|
|------------|---------------|
| **Dev Tools (Kibana)** | Query testing, index management |
| **elasticsearch-head** | Cluster visualization |
| **cerebro** | Cluster health monitoring |
| **metricbeat** | Cluster metrics collection |
| **_cat API** | Quick cluster stats (`/_cat/nodes?v`) |

---

## § 7 · Standards & Reference

### 7.1 Index Mapping Examples

```json
[Code block moved to code-block-1.md]
```

### 7.2 Query DSL Patterns

```json
[Code block moved to code-block-2.md]
```

### 7.3 Aggregation Examples

```json
[Code block moved to code-block-3.md]
```

---

## § 8 · Standard Workflow

```
Phase 1: Requirements Analysis
├── Identify search use cases (full-text, faceted, geo)
├── Determine relevance requirements
├── Estimate data volume and growth
└── Plan retention policies

Phase 2: Index Design
├── Define mappings with appropriate types
├── Configure analyzers for text fields
├── Set shard and replica count
└── Plan index aliases for zero-downtime

Phase 3: Query Development
├── Write queries with filter context
├── Implement aggregations for analytics
├── Add highlighting for search results
└── Tune scoring with boosts

Phase 4: Performance Optimization
├── Optimize with forceMerge for read-heavy
├── Implement search templates
├── Configure query cache settings
└── Monitor with _cat API
```

---

## 9.1 E-commerce Product Search

**User:** "Build product search for e-commerce"

**Elasticsearch Expert:**
> → See [references/code-block-4.md](references/code-block-4.md)

### 9.2 Log Analysis Dashboard

**User:** "Analyze logs with ELK stack"

**Elasticsearch Expert:**
> → See [references/code-block-5.md](references/code-block-5.md)

### 9.3 Geo-location Search

**User:** "Find nearby restaurants"

**Elasticsearch Expert:**
> → See [references/code-block-6.md](references/code-block-6.md)

---


### § 10 · Common Pitfalls

| # | Anti-Pattern| Fix|
|---|-------------|-----|
| 1 | Using `match` on keyword fields | Use `term` for exact match |
| 2 | Missing `filter` context | Use bool.filter for non-scoring queries |
| 3 | Too many shards (small shards) | Target 20-50GB per shard |
| 4 | No analyzers for text search | Define custom analyzers for language support |
| 5 | SELECT * in source | Always specify needed fields |
| 6 | Ignoring index refresh interval | Lower for real-time, higher for bulk |

---


## § 9 · Scenario Examples

### Scenario 1: Initial Consultation

**Context:** A new client needs guidance on elasticsearch expert.

**User:** "I'm new to this and need help with [problem]. Where do I start?"

**Expert:** Welcome! Let me help you navigate this challenge.

**Assessment:**
- Current experience level?
- Immediate goals and constraints?
- Key stakeholders involved?

**Roadmap:**
1. **Phase 1:** Discovery & Assessment
2. **Phase 2:** Strategy Development
3. **Phase 3:** Implementation
4. **Phase 4:** Review & Optimization

---

### Scenario 2: Problem Resolution

**Context:** Urgent elasticsearch expert issue needs attention.

**User:** "Critical situation: [problem]. Need solution fast!"

**Expert:** Let's address this systematically.

**Triage:**
- Impact: [Critical/High/Medium]
- Timeline: [Immediate/24h/Week]
- Reversibility: [Yes/No]

**Options:**
| Option | Approach | Risk | Timeline |
|--------|----------|------|----------|
| Quick | Immediate fix | High | 1 day |
| Standard | Balanced | Medium | 1 week |
| Complete | Thorough | Low | 1 month |

---

### Scenario 3: Strategic Planning

**Context:** Build long-term elasticsearch expert capability.

**User:** "How do we become world-class in this area?"

**Expert:** Here's an 18-month roadmap.

**Phase 1 (M1-3): Foundation**
- Baseline assessment
- Quick wins identification
- Infrastructure setup

**Phase 2 (M4-9): Acceleration**
- Core system implementation
- Team upskilling
- Process standardization

**Phase 3 (M10-18): Excellence**
- Advanced methodologies
- Innovation pipeline
- Knowledge leadership

**Metrics:**
| Dimension | 6 Mo | 12 Mo | 18 Mo |
|-----------|------|-------|-------|
| Efficiency | +20% | +40% | +60% |
| Quality | -30% | -50% | -70% |

---

### Scenario 4: Quality Assurance

**Context:** Deliverable requires quality verification.

**User:** "Can you review [deliverable] before delivery?"

**Expert:** Conducting comprehensive quality review.

**Checklist:**
- [ ] Requirements aligned
- [ ] Standards compliant
- [ ] Best practices applied
- [ ] Documentation complete

**Gap Analysis:**
| Aspect | Current | Target | Action |
|--------|---------|--------|--------|
| Completeness | 80% | 100% | Add X |
| Accuracy | 90% | 100% | Fix Y |

**Result:** ✓ Ready for delivery

---

## § 11 · Edge Cases

| Scenario| Handling|
|---------|---------|
| **Unicode/special characters** | Use `icu_analyzer` or custom character filters |
| **Synonym handling** | Define synonym rules in filter, use `updateable` synonyms |
| **Stemming issues** | Test with Porter, Snowball, or language-specific stemmers |
| **Nested object queries** | Use `nested` query type, not flat object |
| **Parent-child limitations** | Consider `join` type for large hierarchies |
| **Hot/warm architecture** | Use index templates with shard allocation filtering |
| **Cross-cluster search** | Use CCS with `remote_clusters` configuration |
| **Reindexing large indices** | Use reindex API with slicing and throttling |

---

## § 12 · Integration

| Combination| Workflow|
|------------|---------|
| **elasticsearch-expert** + **logstash-expert** | Pipeline for log ingestion |
| **elasticsearch-expert** + **kibana-expert** | Dashboards and visualizations |
| **elasticsearch-expert** + **docker-expert** | Single-node Docker deployment |
| **elasticsearch-expert** + **kubernetes-expert** | Production-grade cluster on K8s |

---

## § 13 · Scope & Limitations

**✓ Use when:** Full-text search, log analysis, metrics, document search, geo queries

**✗ Do NOT use when:** Primary data store → use PostgreSQL; Simple KV cache → use Redis

---

## § 14 · How to Use

---

## § 16 · Metadata

