Chapter 45 · Amazon Opensearch Service
Subchapter 45.6
references/assessment-shape-full-assessment.mdMarkdown21 KBView on GitHub
Loaded by
SKILL.mdStep 0 when the prompt is rich enough to warrant a structured assessment report.
A full migration / adoption assessment with 9 named sections, a numeric readiness score (0–100, GREEN/YELLOW/RED), inline math derivations, ≥3 timestamped citations, ≥2 named gotchas, and a Next Steps handoff (concrete pointers to other skills, CLI commands, AWS docs, and the Pricing Calculator). Output is the longest of any shape in this skill — typically 800–2,000 words depending on artifact density. The customer is asking for something they could hand to a director, an architect, or a steering committee; not a one-liner.
This shape does not include Timeline & Resourcing (engineer-weeks, calendar weeks, or “phase 1 = 2 weeks”). That section was removed from the suite — see NOT REQUIRED below. Cost estimates are also omitted; route to https://calculator.aws (opens in a new tab).
Pick this shape when ≥2 of the following are true. If only ONE is true, prefer a more focused shape (focused-operational, schema-conversion, sizing-only).
Strong signals (any one is sufficient):
schema.xml + solrconfig.xml, _cat/indices + _cluster/health + _nodes/stats, or any combination of ≥40 lines of structured config.Weaker signals (need a second one):
Counter-signals (do NOT dispatch here):
overview or focused-operational.schema-conversion.comparative-decision.anti-pattern-pushback.Begin with the report title (# Migration Assessment: <name>), then a single fenced metadata header showing the generated time and skill version, then the 9 sections.
Call the current_time tool (returns ISO 8601 UTC) and read the skill version from the version: field in SKILL.md frontmatter. Emit:
> Generated: 2026-06-02T16:45:30Z | Skill: amazon-opensearch-service v1If the current_time tool is unavailable, fall back to a placeholder <UTC ISO 8601> and call this out — never invent a timestamp.
Produce these 9 sections, in this order, with these names. Each section header is a level-2 heading (##).
74/100 — YELLOW.A 4–8-row table: engine, version, post-fork status, total docs, total GB, index count, plugin/custom-lib count, fork-rule applicability. Mark UNKNOWN explicitly — do NOT invent values. If artifact density is rich, include a collapsible JSON fingerprint.
Recommended deployment: Managed Multi-AZ-with-Standby / Managed Multi-AZ / Serverless NextGen / Serverless Classic. State the decision driver (e.g., “Multi-AZ-with-Standby because 99.95% SLA was named”, “Serverless NextGen because <100 GB vector workload with bursty traffic”). Name the engine version target (OS 2.19 or OS 3.x) and the upgrade-path implication.
Frame the migration around the 3 components (see references/assessment-workflow.md § “Components of a migration”):
For each component the customer needs, pick ONE primary strategy in bold with a one-sentence reason, then a ranked table over the candidate strategies for that component:
| Strategy | Score (0–10) | Pros | Cons |
|---|
Apply the always-true rules from assessment-workflow.md (post-fork lockout, Migration Assistant for Amazon OpenSearch Service Solr-target restrictions, _source: false HDM-only, etc.). For ES ≥ 7.11 sources <100 GB with ≥30 min cutover window, the primary HDM strategy must be _reindex from remote — Migration Assistant for Amazon OpenSearch Service Historical Data Migration is overkill at that scale.
Show math inline. Do not produce a single point estimate without a derivation chain. Example formula:
storage_gb_per_node = (raw_gb × (1 + replicas) × (1 + overhead_0.15) × (1 + headroom_0.25)) / data_node_countRequired outputs:
<N>× <instance_class> for data nodes (e.g., 6× r7g.2xlarge.search) — Graviton r7g/r8g default.3× <instance> for ≥6 data nodes (e.g., 3× m7g.large.search).If inputs are UNKNOWN, present 2–3 tiered bands (small / medium / large) — never invent a single point estimate.
Numeric score 0–100, weighted breakdown across these 7 dimensions:
| Dimension | Weight |
|---|---|
| Compatibility | 25% |
| Operational readiness | 15% |
| Sizing fitness | 15% |
| Data movement complexity | 15% |
| Cutover complexity | 10% |
| Sizing-input completeness | 10% |
| Stakeholder alignment | 10% |
Tier rule:
Two-table section. Citations into references/assessment-gotchas.md are by gotcha number (e.g., “#2 — ES ≥ 7.11 snapshot/restore lockout”). For Solr sources, prefer #1, #11, #12. For ES sources, prefer #2, #3. For vector workloads, prefer #7, #10.
Migration specifics — items with a known, well-trodden remediation. Frame these as “this is how the migration handles X”, not as risks. The prescribed fix is part of the path, not a hazard. Each row: gotcha number, one-line spec, the remediation in concrete terms (config change, transformer flag, alternate tool). Most #11–#13 type items, and most “Solr → OpenSearch refactor” semantics items, belong here.
Risks / blockers — items that genuinely constrain the migration: no known fix, capacity-plan implications, irreversible target choices, or dependencies on customer action that can fail late. Each row: gotcha number, severity (HIGH / MEDIUM), what breaks if unaddressed, decision needed. #1 (Solr→OS document-level), #3 (Lucene 8→10 segment wall), #16 (uw.medium k-NN), and any “no equivalent on Serverless” items typically belong here.
Include ≥2 named gotchas across the two tables. Always reflect workload-specific trade-offs the customer mentioned in the prompt — do NOT recycle a generic list. If a gotcha has a clean remediation that the migration plan already includes, it belongs in Migration specifics, not Risks.
Concrete handoffs the customer can take to ACT on this assessment. Required if a migration path is recommended. Each next step MUST be one of:
aws- prefix when applicable. Examples:
amazon-opensearch-service shape SIZING_ONLY with measured peak QPS.”aws-eks skill.”aws-security skill.”amazon-bedrock (capability: knowledge-bases-setup).”aws opensearch describe-domain-config --domain-name <name> to confirm the source target region.”kubectl apply -f https://raw.githubusercontent.com/opensearch-project/opensearch-migrations/main/....”GET /_cat/plugins?v on the source cluster to inventory plugins for the gap register.”aws___get_regional_availability tool to verify r7g.2xlarge.search in us-west-2“).Format:
| # | Action | Pointer |
|---|---|---|
| 1 | Stand up Migration Assistant for Amazon OpenSearch Service on EKS | https://docs.aws.amazon.com/solutions/latest/migration-assistant-for-amazon-opensearch-service/solution-overview.html |
| 2 | Run sizing PoC | Load `amazon-opensearch-service` shape SIZING_ONLY with measured peak QPS |
| 3 | Plug sizing into Pricing Calculator | https://calculator.aws (use 6× r7g.2xlarge.search, 3× m7g.large.search, gp3 300 GB) |
| 4 | Provision security stack | Route to `aws-security` skill |
| 5 | Inventory source plugins | `GET /_cat/plugins?v` on source |5–7 rows is typical. Each pointer is either a skill name, a CLI command in backticks, or a full URL. Generic “talk to your DevOps team” or “do testing” entries do NOT count — point at a specific resource.
≥3 entries. Each entry must include:
2026-06-02T14:32Z).Required URLs (pick the ≥3 you actually used): the AWS best-practices page for sizing math, the AWS upgrade-path page, the Migration Assistant for Amazon OpenSearch Service doc when Migration Assistant for Amazon OpenSearch Service is recommended, the Serverless NextGen comparison page when relevant, and https://calculator.aws for the cost handoff.
$X/month, ~$1,500, ≈ $40k/year. Hard route to https://calculator.aws (opens in a new tab).overview.Detected shape: FULL_ASSESSMENT — pasted
schema.xml,solrconfig.xml, and traffic numbers; explicit “prepare a doc for our architect”.Migration Assessment: Acme Search Platform
Generated: 2026-06-02T16:45:30Z | Skill: amazon-opensearch-service v1
You’re on Apache Solr 8.11 SolrCloud, 3 collections, ~120 M docs, ~600 GB on disk, ~2.5k QPS sustained / 8k peak, target Amazon OpenSearch Service in
us-west-2for a Search Relevance Engineer + DevOps audience — here’s the assessment.Executive Summary. Recommend Managed OpenSearch 2.19 Multi-AZ-with-Standby, migrated via Migration Assistant for Amazon OpenSearch Service Solr backfill (Historical Data Migration) — Solr → OS is document-level only (gotcha #1), and at 600 GB the single-shot
_reindexpath is too slow. Readiness 72/100 — YELLOW. Top blocker: 4 custom plugin JARs in<lib>directives need port. Plug sizing below into https://calculator.aws (opens in a new tab).Source. Solr 8.11 · 3 collections · 120 M docs · 600 GB ·
<uniqueKey>doc_id</uniqueKey>· 4 custom JARs ·q.op=AND· 2<copyField>· NMSLIB-equivalent: N/A.Target. Managed OpenSearch 2.19 Multi-AZ-with-Standby (the named 99.95% SLA forces Standby; OS 2.19 chosen because OS 3.x requires reindex of any pre-2.x indexes — already moot on a refactor migration, so 2.19 is the conservative landing). Upgrade to OS 3.x is in-scope post-cutover.
Migration Path. Migration Assistant for Amazon OpenSearch Service Historical Data Migration — primary (backfill the 600 GB), with Migration Assistant for Amazon OpenSearch Service Live Traffic Migration for the cutover window.
_reindexfrom remote scored 4/10 (Solr is not a remote source). Snapshot/Restore scored 0 (no Solr→OS snapshot path).Sizing.
(600 × 2 × 1.15 × 1.25) / 6 = 287.5 GB/node→ 6×r7g.2xlarge.search+ 3×m7g.large.searchcluster managers, gp3 300 GB/node. 18 primary shards × 1 replica ≈ 33 GB/shard (in target band). JVM 32 GB heap → shard cap 2,000/node (gotcha #4).Readiness. Compatibility 18/25 (custom JARs −5,
q.op−2). Operational 12/15. Sizing 14/15. Data movement 9/15 (Solr is document-level only — no segment-level path). Cutover 7/10. Sizing-input 6/10 (no peak ingest rate). Stakeholder 6/10. Total 72/100 — YELLOW.Migration specifics. #11 — if the source
solrconfig.xmlsetsq.op=AND, setdefault_operator: ANDon every translatedquery_stringhandler. #12 — Migration Assistant’s metadata transformer stripsfielddatafrom text fields automatically and adds the.keywordsubfield.Risks / blockers. #1 Solr→OS is document-level, not segment-level (HIGH) — the 600 GB backfill goes via Migration Assistant Historical Data Migration, no snapshot path exists. Custom JARs require port to the OS plugin API (HIGH) — not supported on Serverless NextGen, so this constrains the target.
Next Steps. (1) Deploy Migration Assistant for Amazon OpenSearch Service on EKS — https://docs.aws.amazon.com/solutions/latest/migration-assistant-for-amazon-opensearch-service/solution-overview.html (opens in a new tab). (2) Port 4 custom JARs to OS plugin API. (3) Run sizing PoC — load
amazon-opensearch-serviceshapeSIZING_ONLYwith measured peak ingest rate. (4) Plug 6×r7g.2xlarge.search+ gp3 300 GB into https://calculator.aws (opens in a new tab). (5)GET /_cat/plugins?von source to complete plugin inventory.Citations. 3 URLs with retrieval timestamps follow.
Tick each before sending. If any box is unchecked, fix or restart.
> Generated: <ISO 8601 timestamp> | Skill: amazon-opensearch-service v<N> — timestamp pulled from current_time tool, version from SKILL.md frontmatter.#2, #11).https://calculator.aws with derived inputs. No generic “talk to your team” entries.engineer-weeks, no calendar weeks, no Phase 1 = X weeks._reindex from remote, OSI, in-place blue/green, etc. Do NOT punt with “see the migration capability” or “follow assessment-workflow.md“ — those references are for YOUR own routing, not for the user. The user receives a self-contained Migration Path section.assessment-shape-comparative-decision.md § 2.5): the Executive Summary AND § 4 Migration Path MUST explicitly name the constraint conflict and recommend a relaxation. Phrasing template: “At <scale>, constraints {X, Y, Z} are mutually inconsistent without compromise. Recommend relaxing <constraint> by <quantified trade-off> — this converts the problem to <tractable shape> and Migration Assistant <strategy> applies cleanly.” Do NOT silently claim a single tool path satisfies all named constraints simultaneously — the response will fail if it asserts an impossible feasibility. If the proposed path uses dual-write, also include the dual-write reconciliation rule (“application-layer dual-write authored by your team is customer code, not third-party tooling”).