AutoGineer summary
Written by AutoGineer from the skill’s own files, not by the author
This skill provides a unified framework for interacting with Amazon OpenSearch Service (AOS) and OpenSearch Serverless (AOSS). It covers the full lifecycle of OpenSearch operations, including migration from legacy systems like Solr or Elasticsearch, infrastructure provisioning, advanced search implementation (including vector and RAG), and observability through log and trace analytics. It also features an Agentic AI Assistant for natural language data exploration and incident investigation, ensuring users can navigate complex cluster management and data analysis tasks without manual query crafting.
What it does
- Guides migration workflows from Solr, Elasticsearch, or self-managed OpenSearch to AOS/AOSS.
- Assists with provisioning, lifecycle management, and monitoring of domains and collections.
- Facilitates implementation of vector, semantic, and hybrid search, including RAG with Bedrock.
- Supports log and trace analytics using PPL, OpenTelemetry, and anomaly detection.
- Provides an Agentic AI Assistant for natural language querying and automated incident root cause analysis.
- Enforces operational best practices for sharding, storage tiering, and security configurations.
When to use it
- When planning a migration from legacy search engines to Amazon OpenSearch Service.
- When setting up or optimizing search capabilities, including vector search and RAG.
- When troubleshooting cluster health, performance, or shard allocation issues.
- When performing log or trace analysis to investigate system incidents.
- When you need to generate optimized PPL or DSL queries using natural language.
Advantages
- Centralizes complex operational knowledge across six distinct OpenSearch capabilities.
- Reduces manual query complexity by leveraging the Agentic AI Assistant.
- Provides clear, actionable guidance on production failure modes and migration blockers.
- Standardizes interactions through consistent CLI and data-plane patterns.
- Promotes architectural best practices for scaling and cost-effective storage tiering.
Usage examples
- “How do I migrate my existing Solr index to Amazon OpenSearch Service?”
- The agent identifies the migration capability, explains that Solr to OpenSearch is a refactor migration, and guides you through using the Migration Assistant for data backfill.
- “Why is my cluster status yellow and how can I fix it?”
- The agent uses the AI Assistant capability to analyze cluster health, check shard allocation, and provide specific commands or steps to resolve unassigned shards.
- “Help me set up a RAG pipeline using Bedrock and my OpenSearch domain.”
- The agent routes to the search capability, providing instructions on configuring Bedrock connectors and vector index mappings for semantic retrieval.
- “Find the root cause of the 503 errors in my application logs from the last hour.”
- The agent utilizes the AI Assistant to query logs, perform time-series analysis, and correlate findings to identify the likely root cause of the errors.
Install
Download the skill as a ZIP:
https://autogineer.com/agent-skills/aws/amazon-opensearch-service/downloadUnzip it into the cross-client skills folder of your project:
mkdir -p .agents/skills && unzip amazon-opensearch-service.zip -d .agents/skills
Documentation by AWS
Amazon OpenSearch Service — the unified skill
This skill answers anything about Amazon OpenSearch Service or Serverless across six capabilities. Step 0 below routes the question to ONE capability and points at that capability's entry-point reference. Everything else — when to dispatch, sub-references, capability-specific facts, cross-capability links — lives in the entry-point reference for that capability.
AWS MCP server is recommended, not required. Capability references show standard AWS CLI commands as the primary syntax (e.g.,
aws opensearch describe-domain,aws opensearchserverless create-collection). Where the AWS MCP server is available, itscall_awstool offers a streamlined alternative — but every operation in this skill MUST work via the AWS CLI alone. Data-plane HTTP calls against AOS / AOSS useawscurlfor SigV4-signed requests; this works in both contexts.
Step 0: detect the capability — first thing you do
Pick one of the six capabilities below. State the detected capability in your first sentence (e.g., "Detected capability: SEARCH — semantic search setup with Bedrock embeddings."). Then load the entry-point reference; that file describes when to dispatch, indexes the rest of the capability's files, and routes you to the next step.
| Capability | Entry-point reference |
|---|---|
| migration — Solr / Elasticsearch / self-managed OpenSearch into AOS or AOSS. Schema/query translation, sizing, cutover. | references/assessment-workflow.md |
| provisioning — Provisioning and managing AOS domains and AOSS collections. Lifecycle, upgrades, storage tiers, FGAC, monitoring. | references/provisioning-reference.md |
| search — Vector / semantic / hybrid / sparse / dense / RAG retrieval. Bedrock connectors, FAISS HNSW vs Lucene. | references/search-semantic-search-guide.md |
| log-analytics — Log search, observability, PPL, OSI ingestion, anomaly detection, OpenSearch Dashboards. Splunk/Datadog/ELK alternatives. | references/log-analytics-guide.md |
| trace-analytics — Distributed traces with OpenTelemetry. Span queries, service maps, Data Prepper. | references/trace-analytics-trace-queries.md |
| ai-assistant — Agentic AI Assistant: auto-discovers indices, generates optimized PPL/DSL queries, summarizes results, and investigates incidents end-to-end. No manual query crafting needed. | references/ai-assistant.md |
If a prompt spans capabilities (e.g., "migrate from Solr AND set up RAG on the new domain"), pick the dominant capability for the response and close with a one-line handoff to the other capability's entry-point ref.
Universal rules (apply to ALL capabilities)
These rules apply to every response, regardless of capability. Capability-specific rules (sizing math, shape detection, Migration Assistant for Amazon OpenSearch Service capability matrix, k-NN engine selection) live in the entry-point references, not here.
Report header (every multi-section response). Begin every multi-section response with a single fenced metadata block:
> Generated: <ISO 8601 timestamp> | Skill: amazon-opensearch-service v<N>. Get the time by calling thecurrent_timetool (returns ISO 8601 in UTC). Read the skill version from this file's frontmatterversion:field. For one-line answers (terse FOCUSED_OPERATIONAL replies, anti-pattern refusals) the header is optional; for any multi-section deliverable it is REQUIRED. Place it immediately after the report title and before the first##heading.No dollar estimates (HARD CONSTRAINT). Never produce
$X/month,~$1,500, or any dollar figure. Route every cost question to https://calculator.aws and stop. If a sub-reference contains dollar figures, treat them as informational context only and do NOT pass them through to the user.No credential leakage (HARD CONSTRAINT). Never include master usernames, KMS key ARNs, VPC endpoint URLs, instance IPs, or account IDs in generated output.
Pick one for every A-vs-B decision. Name a primary recommendation in one line with a one-sentence reason. A "go with B if..." caveat is allowed AFTER the primary; never lead with conditional-only guidance.
Source restatement. The first 2–3 sentences must restate the source (engine + version + scale) when known, or restate the customer's question in concrete terms. The very first text the user sees must NOT be tool narration, meta-commentary, the report title, or simply restating the question verbatim.
No marketing tone. Do NOT use "seamless", "robust", "best-in-class", "production-hardened", "enterprise-grade", "world-class", "cleanly", "elegant". Do NOT stack 3+ vague hedges ("typically", "generally", "usually", "in most cases") in a single recommendation — be specific about when it does and does not apply.
Cross-capability handoff. When a user prompt spans capabilities (e.g., "migrate from Solr AND set up RAG on the new domain"), pick the dominant capability for the response, then close with a one-line handoff: "For <other capability>, see
references/<other-capability>-<entry>.md."
Cross-cutting references (used across multiple capabilities)
These references are not capability-prefixed because they apply across capabilities. Capability entry-point references load them when relevant; SKILL.md never loads them directly.
references/sizing.md— sizing math, instance family details, OR1 trade-offs, watermarks, JVM heap rules.references/vector-knn.md— k-NN engines, memory math, RAG ingestion patterns, ELSER alternatives.references/observability.md— log analytics patterns, ISM, UltraWarm/Cold tiering, Splunk/Datadog migration playbooks.references/security.md— FGAC, encryption, VPC patterns, audit logs, compliance posture.references/personas.md— communication style per persona.references/assessment-gotchas.md— production gotcha catalog (cite by number in Migration specifics or Risks/blockers tables; each gotcha carries aCategory:tag that determines its lane).references/assessment-knowledge-retrieval.md— topic → tool → URL recipe for batched verification.
Assets (assets/): report templates for FULL_ASSESSMENT renderings (Solr-source, ES-source, executive summary).
What this skill does NOT do
Estimate dollar costs. Pricing changes monthly and account-specific (RI, Savings Plan, EDP) discount math is outside this skill's reliable scope. Use https://calculator.aws.
Move data. Use Migration Assistant for Amazon OpenSearch Service (Historical Data Migration for backfill, Live Traffic Migration for live cutover).
Build embedding models. Use Amazon Bedrock or SageMaker.
Replace Splunk SPL or Datadog APM 1:1. Some queries / detectors / dashboards need rewriting.
Tune relevance for a specific catalog. Use OpenSearch Benchmark
big5workload + your own judgment list.
Guardrail — where this skill's own files live (MCP vs local install)
This skill can be loaded two ways, and they resolve the skill's own bundled files from different places. Determine how the skill was loaded before reading a reference or running a script:
Loaded through the AWS MCP server's
retrieve_skilltool: The skill is not installed on the local filesystem. You MUST fetch each reference or script viaretrieve_skillwith thefileparameter (e.g.file="references/architecture.md"orfile="scripts/deploy.py"), and run the script from the returned content. Do NOTfile_readthese paths locally — they do not exist on disk.Installed locally (e.g.
.kiro/skills/your-skill/or~/.claude/skills/your-skill/): Read and run files from the local skill directory using relative paths.
This distinction applies only to the skill's own packaged files. User data and
session artifacts are always read from and written to the user's working
directory. Never fetch or write customer data through retrieve_skill.
Files
- ATTRIBUTION.mdAdded by AutoGineer930 B
- LICENSELicence file added by AutoGineer9.9 KiB
- NOTICELicence file added by AutoGineer67 B
- SKILL.md9.2 KiB
- assets/elasticsearch-gap-register.md5.1 KiB
- assets/elasticsearch-index-template-skeleton.md4.2 KiB
- assets/elasticsearch-report-template.md7.8 KiB
- assets/executive-summary-template.md3.0 KiB
- assets/report-template.md12.9 KiB
- assets/solr-gap-register.md3.8 KiB
- assets/solr-index-template-skeleton.md3.7 KiB
- assets/solr-report-template.md5.9 KiB
- assets/tech-deepdive-template.md6.2 KiB
- references/ai-assistant.md18.0 KiB
- references/assessment-gotchas.md17.1 KiB
- references/assessment-knowledge-retrieval.md9.3 KiB
- references/assessment-shape-anti-pattern-pushback.md10.4 KiB
- references/assessment-shape-comparative-decision.md12.9 KiB
- references/assessment-shape-focused-operational.md9.9 KiB
- references/assessment-shape-full-assessment.md20.7 KiB
- references/assessment-shape-overview.md12.1 KiB
- references/assessment-shape-schema-conversion.md8.9 KiB
- references/assessment-shape-sizing-only.md9.4 KiB
- references/assessment-shape-translation.md12.3 KiB
- references/assessment-workflow.md48.4 KiB
- references/compatibility-rubric.md5.9 KiB
- references/log-analytics-guide.md18.0 KiB
- references/log-analytics-osi-pipelines.md8.6 KiB
- references/log-analytics-troubleshooting.md1.6 KiB
- references/observability-ppl-reference.md15.1 KiB
- references/observability.md14.5 KiB
- references/personas.md10.4 KiB
- references/provisioning-agentic-setup.md4.8 KiB
- references/provisioning-domain-deploy-search.md2.2 KiB
- references/provisioning-domain-provision.md3.4 KiB
- references/provisioning-monitoring.md3.4 KiB
- references/provisioning-reference.md6.8 KiB
- references/provisioning-serverless-agentic-setup.md14.9 KiB
- references/provisioning-serverless-deploy-search.md6.7 KiB
- references/provisioning-serverless-deprovision.md4.0 KiB
- references/provisioning-serverless-provision.md8.8 KiB
- references/provisioning-storage-tiers.md2.1 KiB
- references/provisioning-troubleshooting.md8.0 KiB
- references/provisioning-upgrades.md5.4 KiB
- references/readiness-rubric.md3.4 KiB
- references/search-bedrock-connectors.md3.8 KiB
- references/search-dense-vector-models.md5.5 KiB
- references/search-document-processing-guide.md7.7 KiB
- references/search-evaluation-guide.md5.3 KiB
- references/search-index-config.md2.4 KiB
- references/search-recipes.md12.9 KiB
- references/search-semantic-search-guide.md18.2 KiB
- references/search-sparse-vector-models.md4.9 KiB
- references/search-troubleshooting.md1.9 KiB
- references/security.md9.3 KiB
- references/sizing.md12.2 KiB
- references/source-elasticsearch.md6.7 KiB
- references/source-opensearch.md4.8 KiB
- references/trace-analytics-trace-ingestion.md3.3 KiB
- references/trace-analytics-trace-queries.md13.9 KiB
- references/trace-analytics-troubleshooting.md1.6 KiB
- references/vector-knn.md12.9 KiB
references/assessment-shape-anti-pattern-pushback.md
case_shape: ANTI_PATTERN_PUSHBACK purpose: Refuse to size or design an OpenSearch deployment when the source workload is fundamentally wrong-fit for OpenSearch. Redirect the user to the correct technology with a concrete, copy-pasteable alternative. when_to_use: The user is asking for migration sizing, topology, or schema design for a workload whose primary requirements (ACID, foreign keys, hierarchical integrity, audit immutability, exact-match relational lookups, sub-million-row scale) are better served by the existing relational store or a different system entirely. OpenSearch is being applied as a generic "database upgrade" rather than as a search/analytics engine. do_not_use_when: The workload has a real search/analytics shape and the user just has gaps in their plan — that is FULL_ASSESSMENT or READINESS_GAP territory. Wrong-fit pushback is for migrations that should not happen at all, not migrations that are merely under-planned.
Recipe: ANTI_PATTERN_PUSHBACK
1. Detection signals
Dispatch here when the intake matches two or more of the following:
Source is OLTP/relational with strong ACID requirements: Postgres, MySQL, Oracle, SQL Server holding the system of record.
Domain is transactional, not search: HR records, payroll, billing, ledger, inventory of record, identity/auth, order state machine, audit log of record.
Cardinality is small: < ~10M rows total, < ~1k writes/sec, < ~100 QPS read.
Access pattern is exact-match or relational join: lookup-by-id, parent/child traversal (manager → reports), foreign-key joins, point updates by primary key.
Stated motivation is non-search: "we want it faster", "we want it more scalable", "we want JSON flexibility", "the team likes Elasticsearch", "we're consolidating on OpenSearch", "search is a nice side benefit".
Required guarantees OpenSearch cannot provide: multi-document transactions, foreign-key cascade, unique constraints across documents, immutable audit trail, strict referential integrity, RDBMS-style row locking.
If only one signal is present and the rest of the workload looks like real search/analytics, do NOT dispatch here — handle as FULL_ASSESSMENT or READINESS_GAP and surface the concern as a risk in the Risks section instead.
2. Required output template
Produce these sections in order. No others.
Section A — Verdict (one paragraph, ≤ 4 sentences)
State plainly that this is the wrong target. Name the source system, the workload type, and the one-line reason (e.g., "this is an OLTP HR database, not a search workload").
Section B — Verbatim refusal to size
Include exactly this sentence, verbatim, as its own paragraph:
I'm not going to spec instance types or shard counts because recommending a topology for a migration that shouldn't happen lends false confidence to the wrong path.
Do not paraphrase. Do not soften. Do not append "but here's a rough idea anyway".
Section C — Workload-fit reasoning (≥ 2 reasons)
A bulleted list, each bullet naming a specific OpenSearch limitation against a specific requirement of THIS workload. Pull from: ACID/multi-doc transactions, foreign-key & referential integrity, manager/reports hierarchy traversal, audit immutability, unique constraints, scale economics at small cardinality, eventual-consistency on refresh interval.
Section D — Positive alternative (Postgres recipe)
Concrete, copy-pasteable DDL using pg_trgm + tsvector + GIN. The user must be able to paste it into psql and have working fuzzy + full-text search on their existing Postgres without leaving the relational store.
Section E — Future-fit triggers
Bulleted list of specific, measurable conditions that would flip the recommendation. Not vague ("if you grow"). Concrete: "if employee record count exceeds ~50M and you add free-text resume search across all historical records", "if you add log-analytics retention requirements > 90 days at > 1TB/day", etc.
3. NOT REQUIRED — explicitly omit
The following sections must not appear in this shape's output:
Sizing of any kind — no instance types, no shard counts, no replica counts, no EBS sizing, no data-node-vs-cluster-manager tables, no "rough order of magnitude" numbers. None.
Migration path — no logstash JDBC plan, no DMS plan, no reindex plan, no _bulk recipe.
Readiness assessment — no readiness score, no gap analysis, no "you're 70% ready".
Timeline & Resourcing — removed from suite. Do not produce engineer-weeks, sprint estimates, headcount, or a calendar plan. This section has been deleted from the entire skill.
Citations section — this shape is a refusal/redirect, not a researched recommendation. The Postgres recipe is well-known reference material; do not pad with citations.
Customer-specific trade-offs — no "if your team has more Postgres skill vs. OS skill" weighing. The pushback is about workload fit, not team skill.
Persona block / stakeholder analysis — irrelevant to a refusal.
4. FORBIDDEN HEDGES
The following phrases (and any close paraphrase) are prohibited. Producing OpenSearch sizing or topology under any of these framings counts as an ANTI-PATTERN VIOLATION and the response must be regenerated:
"Option B" / "Option 2" / "Plan B" / "Alternative path"
"If you insist..."
"Search-only sidecar" / "search-only mirror" / "read-only search replica on OS"
"If you do go this path, here's what it would look like..."
"For completeness, here is what sizing would look like..."
"I still want to give you something useful, so..."
"Here's a rough estimate just in case..."
"If leadership has already decided..."
The refusal is the deliverable. The Postgres recipe is the deliverable. There is no third deliverable that quietly re-introduces OpenSearch sizing.
5. Worked exemplar (HR DB on Postgres → OpenSearch)
Verdict. This is a Postgres-backed HR system of record — ~200k employee rows, manager→reports hierarchy, payroll integration, immutable audit trail. It is an OLTP relational workload, not a search workload. OpenSearch is the wrong target.
I'm not going to spec instance types or shard counts because recommending a topology for a migration that shouldn't happen lends false confidence to the wrong path.
Why OpenSearch is wrong-fit here:
No ACID across documents. Payroll changes that update an employee, their compensation record, and the audit row must commit atomically. OpenSearch refresh is near-real-time per shard, with no multi-document transaction.
No foreign-key integrity. The manager→reports hierarchy and the employee→department→cost-center chains rely on referential integrity. OpenSearch joins are limited (parent-child within a single index, denormalized nested), and cascade behavior is application-coded.
No unique constraints. Employee ID, SSN, email uniqueness is enforced by Postgres today. OpenSearch will let two
_bulkrequests insert duplicates and you will not find out until reconciliation.Audit immutability is harder, not easier. OpenSearch documents are mutable by
_id. Postgres + append-only audit table + role-based revoke is a stronger guarantee than anything you'd build on top of OpenSearch.Scale economics. 200k rows on a
db.t4g.mediumis a rounding error. The smallest reasonable OpenSearch domain (3 dedicated cluster managers + 2 data nodes) costs more per month than the entire current Postgres footprint, for worse guarantees.What to do instead — keep it in Postgres. If the real ask is "find an employee by partial name / fuzzy match / full-text on job title",
pg_trgm+tsvector+GINsolves it in the database you already have:CREATE EXTENSION IF NOT EXISTS pg_trgm; ALTER TABLE employee ADD COLUMN search_tsv tsvector GENERATED ALWAYS AS ( setweight(to_tsvector('english', coalesce(full_name,'')), 'A') || setweight(to_tsvector('english', coalesce(job_title,'')), 'B') || setweight(to_tsvector('english', coalesce(department,'')), 'C') ) STORED; CREATE INDEX employee_search_tsv_gin ON employee USING GIN (search_tsv); CREATE INDEX employee_name_trgm ON employee USING GIN (full_name gin_trgm_ops); -- fuzzy + full-text in one query: SELECT id, full_name, job_title FROM employee WHERE search_tsv @@ plainto_tsquery('english', :q) OR full_name % :q ORDER BY ts_rank(search_tsv, plainto_tsquery('english', :q)) DESC LIMIT 25;Triggers that would change this recommendation:
Employee/contractor record count exceeds ~50M and you add free-text search across resumes/CVs/interview notes spanning > 5 years of history.
You take on log-analytics or observability retention at > 1 TB/day.
You add semantic / vector search over policy documents or knowledge-base articles at > 1M docs.
You need cross-tenant federated search across many independent HR systems with > 50 sources.
Until one of those is real, the right move is
CREATE EXTENSION pg_trgm;notaws opensearch create-domain.
6. Pre-emit checklist (this shape only)
Tick every box before sending. If any box is unchecked, the response is wrong-shape and must be regenerated.
[ ] Verdict paragraph names the source system, workload type, and one-line reason.
[ ] Verbatim refusal sentence is present, exact, and unmodified.
[ ] At least 2 workload-fit reasons, each tied to a specific OpenSearch limitation against a specific requirement of THIS user's workload (not generic).
[ ] Postgres alternative includes runnable DDL with
pg_trgm,tsvector, andGIN(all three).[ ] Future-fit triggers are concrete and measurable (numbers, named features) — no vague "if you grow".
[ ] No instance types appear anywhere in the response. (grep mentally for
m6g,r6g,t3,data.,master./cluster-manager.,.search.)[ ] No shard/replica counts appear anywhere. (grep for "shard", "replica", "primary", "AZ".)
[ ] No Migration Path, Readiness, Timeline & Resourcing, or Citations section. (Timeline & Resourcing is removed from the entire suite — do not reintroduce.)
[ ] No FORBIDDEN HEDGE phrases. (grep for "Option B", "if you insist", "sidecar", "for completeness", "if you do go this path", "Plan B", "Option 2".)
[ ] The Postgres recipe is presented as the alternative, not as one of two options.
[ ] No persona block, no stakeholder analysis, no team-skill weighing.
[ ] Total length is shorter than a FULL_ASSESSMENT — refusal should not pad.
Requirements and compatibility
Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta
“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.
Needs: Needs an MCP server
Security
What our scanner noticed· Low risk
- Instructions that use the network
A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.
Attribution and licence
- Published by
- AWS
- Publisher
- AWS (Official)
- Source
- aws/agent-toolkit-for-aws · plugins/aws-data-analytics/skills/amazon-opensearch-service · commit 0a218f8
- Licence
- Apache License 2.0 (redistribution allowed)
- LICENSE (added by AutoGineer from LICENSE)
- NOTICE (added by AutoGineer from NOTICE)
- ATTRIBUTION.md (written by AutoGineer)
- Synced
- Also distributed in
- aws/agent-toolkit-for-aws
AutoGineer is not affiliated with or endorsed by AWS or AWS.
Download ZIP
The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download amazon-opensearch-service.zip