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/search-semantic-search-guide.md
Search capability — entry point and methods guide
This file is the entry point for the search capability. It covers vector / semantic / hybrid / sparse / dense / RAG retrieval on Amazon OpenSearch Service or Serverless. Supports Bedrock connectors (Titan, Cohere), self-hosted embedding models, FAISS HNSW vs Lucene, ELSER alternatives, and hybrid scoring.
When to use this capability
SKILL.md routes here when the user is asking about search retrieval setup or design. Concrete triggers:
Phrases: "semantic search", "hybrid search", "vector index", "k-NN", "build a RAG app", "Bedrock embeddings", "sparse vectors", "dense vectors", "ELSER", "neural search", "FAISS or Lucene"
Tasks: pick an embedding model, set up a Bedrock connector, configure a vector index, design hybrid scoring, evaluate retrieval quality, troubleshoot relevance
All search files (capability index)
After loading this entry, you can discover every search-capability file from this list.
| User need | File |
|---|---|
| End-to-end semantic search setup | this file |
| Bedrock embedding connector | search-bedrock-connectors.md |
| Pick a dense embedding model | search-dense-vector-models.md |
| Pick a sparse embedding model (ELSER alt.) | search-sparse-vector-models.md |
| Configure index for vector / hybrid | search-index-config.md |
| Process / chunk documents for retrieval | search-document-processing-guide.md |
| Evaluate search quality | search-evaluation-guide.md |
| Query DSL recipes (BM25, multi_match, function_score) | search-recipes.md |
| Troubleshoot search issues | search-troubleshooting.md |
Cross-cutting refs you may also load: vector-knn.md (vector sizing math, k-NN engines), sizing.md, security.md.
Vector / k-NN target shape
Serverless NextGen Vector Search collections use a simplified API — no
engine/modeselection (system auto-picks); supports custom document IDs and 32x compression by default.Serverless Classic Vector Search collections require explicit
engine: faiss; Lucene/IVF/PQ are NOT supported on Classic Serverless.Managed Domain supports all engines: Lucene, FAISS HNSW, FAISS IVF, FAISS PQ.
NMSLIB is removed in OS 3.x. For the engine-by-engine breakdown, see vector-knn.md.
Sizing-related universal rules (apply when this capability sizes a vector index)
Current-generation instances. Default to Graviton (
r7g/r8gfor memory-optimized;m7g/m8gfor cluster managers).r6g/r6gdonly with explicit justification.Input honesty. When sizing on UNKNOWN inputs, lead with
[BLOCKER — need input]OR present 2–3 tiered bands. Never present a single point estimate built on invented numbers.
Cross-capability handoff
For provisioning the underlying domain or collection: see
provisioning-reference.md.For migrating an existing search workload into AOS: see
assessment-workflow.md.For post-deploy log analytics on the same domain: see
log-analytics-guide.md.For embedding model selection beyond Bedrock: see
search-dense-vector-models.mdandsearch-sparse-vector-models.md.
1. BM25 (Lexical Search)
1.1 Overview
BM25 is the default ranking algorithm in OpenSearch. It calculates relevance based on term frequency (TF), inverse document frequency (IDF), and document length normalization.
1.2 Accuracy Characteristics
| Aspect | Rating | Notes |
|---|---|---|
| Exact Match Precision | 5/5 | Excellent for exact keyword queries |
| Semantic Understanding | 2/5 | Cannot understand synonyms or paraphrases |
| Out-of-vocabulary Handling | 1/5 | Fails completely on unseen terms |
| Domain-specific Terms | 5/5 | Excellent for technical/domain vocabulary |
Strengths:
Perfect for exact keyword matching
Handles rare/domain-specific terminology well
No vocabulary mismatch between query and index
Weaknesses:
Cannot understand semantic meaning
Fails on synonyms (e.g., "car" vs "automobile")
Language-dependent (requires language-specific analyzers)
1.3 Cost Profile
| Resource | Cost Level | Details |
|---|---|---|
| Storage | 1/5 (Low) | Only inverted index, typically 10-30% of raw text size |
| Memory | 1/5 (Low) | Field data cache only when needed |
| CPU (Indexing) | 1/5 (Low) | Simple tokenization and analysis |
| CPU (Query) | 1/5 (Low) | Efficient inverted index lookup |
Storage Estimation:
Index Size ≈ Raw Text Size × 0.1 to 0.3
Example: 1GB text → 100-300MB indexScaling Behavior:
Cost&Latency grows sub-linearly with data size
Horizontal scaling is straightforward
Query complexity significantly affects latency
1.5 Unique Features & Query Types
BM25 supports several special query types that vector search cannot:
| Query Type | Description | Use Case |
|---|---|---|
prefix | Matches terms starting with specified prefix | Autocomplete, partial matching |
wildcard | Pattern matching with * and ? | Flexible string matching |
regexp | Regular expression matching | Complex pattern matching |
fuzzy | Tolerates spelling mistakes | Typo tolerance |
ngram | Matches character n-grams | Partial word matching |
phrase | Matches exact phrase in order | Exact phrase search |
span | Positional queries | Near queries, ordered matching |
term | Exact term matching (no analysis) | Exact value matching |
1.6 Language Support
| Feature | Support Level | Notes |
|---|---|---|
| English | 5/5 | Excellent with standard analyzer |
| Other Languages | 4/5 | Requires language-specific analyzers |
| Cross-lingual | 0/5 | Not supported natively |
| CJK Languages | 3/5 | Requires specialized tokenizers (kuromoji, ik, etc.) |
1.7 When to Use BM25
Recommended:
Exact keyword/phrase search requirements
Autocomplete and typeahead features
Domain-specific terminology search
Regex or wildcard pattern matching
Maximum cost efficiency required
Low-latency requirements at any scale
Not Recommended:
Semantic similarity search
Cross-lingual search
Synonym handling without manual configuration
User queries differ significantly from document terminology
2. Dense Vector Search
2.1 Overview
Dense vector search uses neural network embeddings to represent text as dense floating-point vectors (typically 384-1536 dimensions). Similarity is computed using cosine similarity, dot product, or L2 distance.
2.2 Accuracy Characteristics
| Aspect | Rating | Notes |
|---|---|---|
| Semantic Understanding | 5/5 | Captures meaning beyond keywords |
| Synonym Handling | 5/5 | Automatically handles synonyms |
| Cross-lingual | 5/5 | With multilingual models |
| Exact Match | 1/5 | Does not support exact keyword matches |
| Domain-specific | 3/5 | If your domain distribution differs greatly from general corpus, fine-tuning is required for good results |
Strengths:
Understands semantic meaning
Handles paraphrases and synonyms naturally
Supports cross-lingual search with multilingual models
Zero-shot transfer to new domains
Weaknesses:
May miss exact keyword matches
Requires embedding model
Higher computational cost
Quality depends heavily on embedding model choice
2.3 Index Algorithms (Core Structure)
2.3.1 HNSW (Hierarchical Navigable Small World)
Overview: Graph-based approximate nearest neighbor (ANN) algorithm. Default and most popular choice.
| Aspect | Details |
|---|---|
| Accuracy | 95-99%+ recall achievable with proper tuning |
| Build Time | Moderate to slow |
| Query Latency | Fast (1-50ms typically) |
| Memory Requirement | High - entire graph in memory (unless using quantization) |
| Scalability | Good, but memory-bound |
Memory Estimation (Raw):
Memory = num_vectors × (dimensions × 4 bytes + m × 8 bytes + overhead)
Example: 10M vectors × 768 dims, m=16
Memory ≈ 10M × (768 × 4 + 16 × 8) ≈ 32GBBest For:
Small to medium datasets that fit in memory
Low-latency requirements
High accuracy requirements
2.3.2 IVF (Inverted File Index)
Overview: Clustering-based approach that partitions vectors into clusters (buckets).
| Aspect | Details |
|---|---|
| Accuracy | 85-95% recall typical |
| Build Time | Slow (requires training) |
| Query Latency | Medium (5-100ms) |
| Memory Requirement | Lower than HNSW (especially with PQ) |
| Scalability | Better for large datasets |
Best For:
Larger datasets where memory is constrained
Can tolerate slightly lower accuracy
Batch search workloads
2.3.3 Disk-based Vector Search (mode: on_disk)
Overview: OpenSearch's solution for billion-scale vector search with limited memory (requires OpenSearch 2.17+). Uses Binary Quantization (BQ) to keep a compressed index in memory while storing full-precision vectors on disk.
| Aspect | Details |
|---|---|
| Accuracy | Good recall (uses re-ranking from disk) |
| Build Time | Fast (BQ training is automatic) |
| Query Latency | Medium (10-100ms), depends on SSD speed |
| Memory Requirement | Very Low (uses 1-bit BQ compressed vectors in RAM) |
| Scalability | Excellent for billion-scale datasets |
Memory Estimation:
Memory = num_vectors × dimensions / 8 (bits to bytes) + HNSW graph overhead
Example: 1B vectors × 768 dims (using BQ)
Memory ≈ 1B × 96 bytes ≈ 96 GB (manageable on a cluster)
vs. ~3TB for float32 vectorsBest For:
Billion-scale datasets
Cost-efficiency (trading RAM for SSD)
High-throughput scenarios where RAM is the bottleneck
2.4 Compression & Quantization
2.4.1 Product Quantization (PQ)
Compression technique that breaks vectors into sub-vectors and encodes them.
| Aspect | Details |
|---|---|
| Accuracy | 80-90% recall (lossy) |
| Training | Requires a training step |
| Memory Reduction | 10-50x compression |
2.4.2 Binary Quantization (BQ)
Extreme compression using 1-bit representations.
| Aspect | Details |
|---|---|
| Accuracy | Lower than PQ generally, but faster |
| Memory Reduction | 32x compression (float32 -> 1 bit) |
| Query Latency | Ultra-fast (Hamming distance) |
2.5 Total Latency Composition
Total Latency = Embedding Inference Time + Vector Search Time (KNN)Embedding Inference: 5-200ms depending on deployment (API vs GPU vs CPU)
Vector Search (KNN): 1-100ms depending on algorithm
Critical Note: Often, inference time dominates the total latency.
2.6 Language Support
| Feature | Support Level | Notes |
|---|---|---|
| English | 5/5 | Excellent with most models |
| Multilingual | 5/5 | With multilingual models (mE5, multilingual-e5, etc.) |
| Cross-lingual | 5/5 | Query in one language, retrieve in another |
| Low-resource Languages | 3/5 | Depends on model training data |
2.7 When to Use Dense Vector
Recommended:
Semantic similarity search
Cross-lingual search requirements
Synonym and paraphrase handling needed
Natural language queries from users
Question-answering systems
RAG (Retrieval Augmented Generation) applications
Not Recommended:
Exact keyword matching is critical
Highly specialized domain vocabulary not covered by model
Extremely cost-sensitive deployments
Real-time autocomplete/typeahead
Sub-millisecond latency requirements
3. Sparse Vector Search
3.1 Overview
Sparse vector search uses learned sparse representations where most dimensions are zero. Unlike dense vectors with 384-1536 dimensions all populated, sparse vectors may have 30,000+ dimensions but only 100-500 non-zero values.
3.2 How Neural Sparse Works
Uses neural networks to learn sparse representations with semantic meaning:
Documents and queries are encoded into sparse vectors
Each dimension corresponds to a vocabulary token
Weights indicate semantic importance (not just term frequency)
Advantages over BM25:
Learns semantic term expansion (e.g., "dog" activates "puppy", "canine")
Trained on relevance signals
Better zero-shot domain transfer
3.3 Search Modes: Doc-only (Recommended) vs Bi-encoder
3.3.1 Doc-only Mode (Recommended)
Ingestion: Documents encoded using a specialized doc-only model
Search: Query processed using a simple tokenizer (not full model inference)
Why recommended: Zero query inference, low latency (10x+ faster), lower cost.
3.3.2 Bi-encoder Mode
Both documents and queries processed by the same deep neural network
Higher relevance but higher latency
3.4 Index Backends
3.4.1 rank_features Field (Inverted Index Based)
Exact search (no approximation)
Best for smaller datasets (< 50M documents)
3.4.2 SEISMIC (ANN-based Sparse Search)
Approximate nearest neighbor for sparse vectors
Best for large-scale datasets (> 10M documents) with latency sensitivity
3.5 Accuracy Characteristics
| Aspect | Rating | Notes |
|---|---|---|
| Semantic Understanding | 4/5 | Good, but generally slightly below dense |
| Exact Match | 4/5 | Better than dense vectors |
| Term Expansion | 5/5 | Learns relevant term expansion |
| Interpretability | 5/5 | Can see which terms matched |
3.6 When to Use Sparse Vector
Recommended:
Balance between lexical and semantic search
Users want semantic search without query-time model inference
Extreme fast semantic search (doc-only + SEISMIC)
Interpretability is important
Lower memory budget than dense vectors
Not Recommended:
Cross-lingual search
Maximum semantic understanding needed
4. Hybrid Search
4.1 Overview
Hybrid search combines multiple retrieval methods (BM25, dense vector, sparse vector) to leverage the strengths of each. OpenSearch supports hybrid search through the hybrid query type and score normalization.
4.2 Score Normalization
OpenSearch provides several normalization techniques (Min-Max, L2, Harmonic Mean, etc.) to ensure scores are comparable before combination.
4.3 Combination Strategy for Relevance
Hybrid Scope Rule: Use at most two retrieval methods per hybrid query.
Recommended Combinations:
Dense + Sparse: Best search relevance. Two layers of semantic understanding.
Dense + BM25: Robust baseline combining semantic understanding with exact keyword precision.
Not Recommended:
Sparse + BM25: Generally redundant. Sparse vectors already capture keyword information.
4.4 When to Use Hybrid Search
Recommended:
Maximum Relevance: When accuracy and recall are the top priorities.
Mixed query types (some exact, some semantic).
Unknown query distribution.
Can afford additional infrastructure cost.
Not Recommended:
Strict cost constraints
Simple use cases where one method suffices
Sub-10ms latency requirements
Development/prototype phase (start simple)
5. Agentic Search (Natural-Language Query Translation)
5.1 Overview
Agentic search uses an LLM to translate a natural-language question into OpenSearch DSL, then executes it — the caller asks a question in plain language instead of authoring a query. It is a standalone retrieval method that returns synthesized answers, implemented as a natural-language query-authoring layer over BM25/dense/hybrid retrieval.
5.2 When to Use Agentic Search
Recommended:
Callers who cannot author DSL/PPL (business users, natural-language front-ends).
Ad-hoc exploratory questions over a well-mapped index.
Not Recommended:
Latency-sensitive paths, because each query adds an LLM round-trip (typically 200–2000 ms) plus per-query model cost on top of retrieval.
High-QPS production traffic with fixed query shapes — author the DSL once instead, because a static query avoids the per-call LLM cost.
5.3 Conversational vs Flow
Conversational (AOS domain, stateful): multi-turn with conversation memory + RAG. Setup:
provisioning-agentic-setup.md.Flow (AOSS Serverless, stateless): each query planned independently, lower latency/cost, no memory. Setup:
provisioning-serverless-agentic-setup.md.
5.4 Security Considerations
Field exposure: the LLM can generate DSL that surfaces any field in the index, including PII. Apply field-level access control (document/field security) so an agentic query cannot return fields the caller is not authorized to see.
Cost abuse: each agentic query incurs a Bedrock model invocation. Throttle/rate-limit the agentic path to prevent runaway per-call model cost.
Logging & monitoring: enable CloudTrail for
_plugins/_mlmodel/agent calls and set CloudWatch alarms on agentic query error rates and unusual invocation volume. See the detailed monitoring guidance inprovisioning-agentic-setup.mdandprovisioning-serverless-agentic-setup.md.Log confidentiality: when
agentic_contextis enabled for debugging, the generated DSL surfaces in the response metadata (and thus in any logs that capture full responses). Encrypt any CloudWatch log group that receives agentic responses with a customer-managed KMS key and restrict its access policy, because those logs can contain the same sensitive field values the query returned.AWS WAF (defense in depth): if the endpoint is internet-facing, front it with AWS WAF using request-size limits and rate-based rules, because WAF filters oversized and abusive free-form input at the edge before it reaches the LLM query planner.
For setup-time security guidance (IAM scoping, model/agent access policies), see the security sections in
provisioning-agentic-setup.md(conversational) andprovisioning-serverless-agentic-setup.md(flow).
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