> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tensor9.com/llms.txt
> Use this file to discover all available pages before exploring further.

# OpenSearch Domain

> OpenSearch Domain APIs with Cloud Adapter.

This page describes how OpenSearch Domain maps to services in the environment where the application runs. Some profiles adapt origin API calls; others translate infrastructure or document target-native behavior.

## Supported environments

| Environment        | Mapping        |
| ------------------ | -------------- |
| Akamai             | Infrastructure |
| Azure              | Infrastructure |
| DigitalOcean       | Infrastructure |
| Google Cloud       | Infrastructure |
| OCI                | Infrastructure |
| Private Kubernetes | Infrastructure |
| Scaleway           | Infrastructure |

API means the profile adapts origin API behavior. Infrastructure means the profile changes provisioned resources or documents a target-native alternative without promising an origin API endpoint. Check the operation and capability tables for the behavior your application depends on.

## How the targets compare

Each row compares a capability of OpenSearch Domain with its adaptation on each target.
A dash means this profile does not state the capability for that target.

### Cloud Adapter

| Capability                                                                          | OpenSearch Domain                                        | Akamai, Azure, DigitalOcean, Google Cloud, Private Kubernetes, and Scaleway · OpenSearch | Azure · Azure Native Elastic                                                                                                              | DigitalOcean · OpenSearch Domain | DigitalOcean and Scaleway · Lucenia (self-hosted)                                                                                     | DigitalOcean and Google Cloud · Elastic Cloud (managed)                            | DigitalOcean · DigitalOcean Managed OpenSearch                                                | OCI                                                                                                     | Scaleway · Scaleway Cloud Essentials for OpenSearch                                                |
| ----------------------------------------------------------------------------------- | -------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- |
| OpenSearch REST API                                                                 | OpenSearch / Elasticsearch REST                          | native OpenSearch API; match engine and client versions                                  | adapter-translated OpenSearch requests on Elasticsearch 8.x                                                                               | -                                | native OpenSearch API; match engine and client versions                                                                               | adapter-translated OpenSearch requests on Elasticsearch 8.x                        | native OpenSearch API; match engine and client versions                                       | native OpenSearch API; match engine and client versions                                                 | native OpenSearch API; match engine and client versions                                            |
| Engine + version                                                                    | OpenSearch (AWS-managed domain)                          | OpenSearch (self-hosted; OpenSearch Operator / Helm chart)                               | Elasticsearch 8.x (Elastic-managed via Azure Native ISV Service)                                                                          | -                                | Lucenia (OpenSearch-2.14-derived fork; API ≈ 2.18; early-stage 0.x)                                                                   | Elasticsearch 8.x (Elastic Cloud Hosted)                                           | OpenSearch 2.19 (DigitalOcean-managed)                                                        | OpenSearch 2.11 / 2.15 / 2.18 / 2.19.1 / 3.2 / 3.6 (OCI-managed)                                        | OpenSearch 2.0 (the only version Scaleway offers; EOL 2027-06-06)                                  |
| Durability / HA owner · who operates the cluster                                    | AWS-managed domain                                       | you (self-managed on Kubernetes)                                                         | Elastic / Microsoft (Azure Native Elastic)                                                                                                | -                                | you (self-managed on Kubernetes, Lucenia Helm chart)                                                                                  | Elastic (Elastic Cloud)                                                            | DigitalOcean (Managed OpenSearch)                                                             | Oracle (OCI Search with OpenSearch)                                                                     | Scaleway (Cloud Essentials for OpenSearch)                                                         |
| Cluster topology / sharding                                                         | data + dedicated-master + UltraWarm tiers                | nodePools you define (data + dedicated cluster\_manager + optional warm role)            | resource without topology fields - size in the Elastic console (default 16 GB / 560 GB / 2 AZ)                                            | -                                | nodePools (data + master) you define                                                                                                  | ec\_deployment full topology: hot/warm/cold/frozen tiers, size + zone\_count (1-3) | no dedicated-master tier - 1-15 nodes (GP/Mem: 1/3/6/9/15; Basic: 1 or 3)                     | mandatory 3-tier: data + leader (master) + Dashboard nodes; optional coordinator / ML / search tiers    | no dedicated-master tier; node\_count nodes of one type, 2 vCPU / 8 GB up to 8 vCPU / 32 GB        |
| Replication / HA · replicas + failover                                              | Multi-AZ (up to 99.99% with standby)                     | index replicas + shard allocation awareness you configure; no SLA                        | governed by the Elastic Cloud SLA (99.5 / 99.9 / 99.95% by AZ count)                                                                      | -                                | you configure; no SLA                                                                                                                 | 99.5 / 99.9 / 99.95% by AZ count (1 / 2 / 3 zones)                                 | add a standby for HA; the DO Managed Databases SLA is 99.95% (with standby) / 99.5% (without) | OCI spreads data nodes across availability domains; no published availability SLA                       | the managed deployment's own - the AWS Multi-AZ standby model has no counterpart here              |
| Storage                                                                             | EBS gp3 (to 36 TiB/node) / 3 PiB per domain              | PersistentVolume per nodePool (diskSize / storageClass); IOPS is StorageClass-derived    | included in the plan (no topology field on the resource)                                                                                  | -                                | PersistentVolume (persistence.size / storageClass)                                                                                    | disk bundled at a fixed disk:RAM ratio per tier                                    | managed (10 GiB increments; size slug)                                                        | per-node data\_node\_storage\_gb (FLEX sizing; up to \~314 TB/node, OCPU 1-32, memory 20-1024 GB)       | sbs\_5k NVMe only, from a 5 GB floor to 10 TB, allocated in 5 GB steps                             |
| Encryption at rest                                                                  | encrypt\_at\_rest + KMS CMK                              | the PersistentVolume / StorageClass encryption (no AWS-KMS CMK analog)                   | Elastic-managed                                                                                                                           | -                                | StorageClass encryption                                                                                                               | Elastic-managed (CMK is an EC Enterprise feature)                                  | LUKS at rest, always on (no BYOK)                                                             | service-managed encryption; no per-domain AWS KMS customer-key setting in this mapping                  | Scaleway's own storage encryption (the AWS KMS CMK has no counterpart)                             |
| Security / FGAC                                                                     | fine-grained access control + IAM policies               | the Security plugin, config + internal\_users you own                                    | Elastic native realm / API keys / SSO, not the OpenSearch Security plugin                                                                 | -                                | SSPL security component; LUCENIA\_INITIAL\_ADMIN\_PASSWORD                                                                            | Elastic native realm (security.enabled), not the OpenSearch Security plugin        | Security plugin present but only the doadmin user via DO                                      | OpenSearch Security plugin - security\_mode ENFORCING + master user; SAML/LDAP/OIDC; DLS/FLS (2.3+)     | Security plugin present; ONE user\_name/password from Scaleway, roles configured inside OpenSearch |
| Plugins (k-NN / SQL / ISM / Alerting / ML)                                          | bundled \_plugins/\* (Apache-2.0)                        | the full bundled \_plugins/\* set (k-NN, SQL/PPL, ISM, Alerting, AD, ML Commons)         | ES-native (\_ml, \_watcher, dense\_vector); the OpenSearch \_plugins/\* APIs diverge (k-NN/SQL adapter-served, PPL/security out of scope) | -                                | k-NN / vector confirmed (HNSW/IVF/Faiss, hybrid BM25+vector); full \_plugins/\* parity (SQL/PPL/ISM/AD/ML) not independently verified | ES-native; the OpenSearch \_plugins/\* APIs diverge                                | k-NN + Neural + SQL/PPL + ISM + Alerting/AD/ML bundled                                        | the full supported set: k-NN, SQL/PPL, ISM, Alerting, AD, ML Commons, Neural Search, Security Analytics | k-NN + Neural + SQL/PPL + ISM + Alerting/AD/ML all present                                         |
| Snapshots / backups                                                                 | managed automated + manual \_snapshot                    | self-managed: register a snapshot repository + schedule OpenSearch Snapshot Management   | Elastic SLM (console)                                                                                                                     | -                                | self-managed                                                                                                                          | Elastic SLM (snapshot.retention)                                                   | managed hourly (24h) + daily (3d) + 7-day PITR                                                | managed daily backups (14-day, non-configurable) + manual Snapshot API to Object Storage                | Scaleway's own backups; AWS managed snapshots are not carried across                               |
| API coverage                                                                        | full                                                     | high                                                                                     | partial                                                                                                                                   | full                             | partial                                                                                                                               | partial                                                                            | high                                                                                          | high                                                                                                    | high                                                                                               |
| The deployment is public until you attach a Private Network · the one to read first | vpc\_options placing the domain in your VPC              | -                                                                                        | -                                                                                                                                         | -                                | -                                                                                                                                     | -                                                                                  | -                                                                                             | -                                                                                                       | a public endpoint, until a Private Network is attached                                             |
| There is exactly one version, and it may be a major step · 2.0                      | your domain's engine\_version                            | -                                                                                        | -                                                                                                                                         | -                                | -                                                                                                                                     | -                                                                                  | -                                                                                             | -                                                                                                       | OpenSearch 2.0 (EOL 2027-06-06)                                                                    |
| Node size is a floor, not a translation · and the ceiling is low                    | r6g.large.search and the rest of the AWS search families | -                                                                                        | -                                                                                                                                         | -                                | -                                                                                                                                     | -                                                                                  | -                                                                                             | -                                                                                                       | SEARCHDB-SHARED-2C-8G (2 vCPU / 8 GB)                                                              |
| Scaleway flags every node type beta · its assessment, not ours                      | a GA AWS service                                         | -                                                                                        | -                                                                                                                                         | -                                | -                                                                                                                                     | -                                                                                  | -                                                                                             | -                                                                                                       | beta node types on a v1alpha1 API                                                                  |
| Volume size rounds UP; IOPS is not tunable · sbs\_5k only                           | EBS gp3 with tunable IOPS and throughput                 | -                                                                                        | -                                                                                                                                         | -                                | -                                                                                                                                     | -                                                                                  | -                                                                                             | -                                                                                                       | sbs\_5k (NVMe, 5K IOPS), 5 GB steps from a 5 GB floor                                              |

## On Akamai, Azure, DigitalOcean, Google Cloud, Private Kubernetes, and Scaleway

### OpenSearch

| Operation                                                                            | Area               | Support      | Depth        | Notes                                                                                                                                                                                                              |
| ------------------------------------------------------------------------------------ | ------------------ | ------------ | ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Cluster health / stats / \_cat APIs                                                  | Cluster            | Supported    | Most usage   | -                                                                                                                                                                                                                  |
| Tasks API (\_tasks)                                                                  | Cluster            | Supported    | Full surface | drives async reindex / update-by-query                                                                                                                                                                             |
| Bulk (\_bulk)                                                                        | Documents          | Supported    | Common       | batch index/update/delete                                                                                                                                                                                          |
| Delete document                                                                      | Documents          | Supported    | Common       | -                                                                                                                                                                                                                  |
| Get document (GET /\{index}/\_doc/\{id})                                             | Documents          | Supported    | Common       | -                                                                                                                                                                                                                  |
| Index document (PUT/POST /\{index}/\_doc)                                            | Documents          | Supported    | Common       | -                                                                                                                                                                                                                  |
| Multi-get (\_mget)                                                                   | Documents          | Supported    | Most usage   | -                                                                                                                                                                                                                  |
| Update document (\_update)                                                           | Documents          | Supported    | Common       | -                                                                                                                                                                                                                  |
| Snapshots / backups (\_snapshot)                                                     | Durability         | Partial      | Full surface | the \_snapshot API is native, but you register the repository and schedule snapshots with OpenSearch Snapshot Management that AWS managed for you                                                                  |
| Aliases (\_aliases)                                                                  | Index management   | Supported    | Most usage   | -                                                                                                                                                                                                                  |
| Analyze (\_analyze)                                                                  | Index management   | Supported    | Full surface | tokenizer/analyzer testing                                                                                                                                                                                         |
| Create / Delete / Get index                                                          | Index management   | Supported    | Common       | -                                                                                                                                                                                                                  |
| Data streams (\_data\_stream)                                                        | Index management   | Supported    | Full surface | -                                                                                                                                                                                                                  |
| Open / Close index                                                                   | Index management   | Supported    | Full surface | -                                                                                                                                                                                                                  |
| Put / Get mapping                                                                    | Index management   | Supported    | Common       | -                                                                                                                                                                                                                  |
| Refresh / Flush / Forcemerge                                                         | Index management   | Supported    | Most usage   | -                                                                                                                                                                                                                  |
| Rollover / Shrink / Split / Clone                                                    | Index management   | Supported    | Full surface | -                                                                                                                                                                                                                  |
| Update / Get settings                                                                | Index management   | Supported    | Most usage   | -                                                                                                                                                                                                                  |
| Index & component templates (\_index\_template / \_component\_template)              | Ingest & templates | Supported    | Full surface | -                                                                                                                                                                                                                  |
| Ingest pipelines (\_ingest/pipeline: put / get / delete / \_simulate)                | Ingest & templates | Supported    | Full surface | -                                                                                                                                                                                                                  |
| License / X-Pack (\_license, \_xpack)                                                | Licensing          | Out of scope | Full surface | Elasticsearch licensing endpoints \_license and \_xpack are not OpenSearch APIs.                                                                                                                                   |
| Index State Management (\_plugins/\_ism)                                             | Lifecycle          | Supported    | Full surface | Index State Management (\_plugins/\_ism) is bundled                                                                                                                                                                |
| Alerting / anomaly detection / ML Commons (\_plugins/\*)                             | Observability & ML | Supported    | Full surface | Alerting, Anomaly Detection, ML Commons, Notifications, Observability all ship in the distribution                                                                                                                 |
| Notifications / observability (\_plugins/\_notifications, \_plugins/\_observability) | Observability & ML | Supported    | Full surface | Alerting, Anomaly Detection, ML Commons, Notifications, Observability all ship in the distribution                                                                                                                 |
| PPL (\_plugins/\_ppl)                                                                | Query languages    | Supported    | Full surface | PPL (\_plugins/\_ppl) is bundled                                                                                                                                                                                   |
| SQL (\_plugins/\_sql)                                                                | Query languages    | Supported    | Full surface | the SQL plugin (\_plugins/\_sql) is bundled                                                                                                                                                                        |
| Stored scripts & Painless (\_scripts, \_scripts/painless/\_execute)                  | Scripting          | Supported    | Full surface | -                                                                                                                                                                                                                  |
| Aggregations                                                                         | Search             | Supported    | Common       | metrics + bucket aggregations in \_search                                                                                                                                                                          |
| Count / Explain / Suggest                                                            | Search             | Supported    | Most usage   | -                                                                                                                                                                                                                  |
| Field capabilities (\_field\_caps)                                                   | Search             | Supported    | Full surface | -                                                                                                                                                                                                                  |
| Multi-search (\_msearch)                                                             | Search             | Supported    | Most usage   | -                                                                                                                                                                                                                  |
| Point-in-time (\_search/point\_in\_time)                                             | Search             | Supported    | Most usage   | native - same \_search/point\_in\_time endpoint                                                                                                                                                                    |
| Reindex / Update-by-query / Delete-by-query                                          | Search             | Supported    | Full surface | -                                                                                                                                                                                                                  |
| Scroll (\_search/scroll)                                                             | Search             | Supported    | Most usage   | deep pagination                                                                                                                                                                                                    |
| Search (\_search + query DSL)                                                        | Search             | Supported    | Common       | -                                                                                                                                                                                                                  |
| Search templates (\_search/template, \_render/template)                              | Search             | Supported    | Full surface | -                                                                                                                                                                                                                  |
| Term vectors (\_termvectors / \_mtermvectors)                                        | Search             | Supported    | Full surface | -                                                                                                                                                                                                                  |
| Security plugin / fine-grained access control (\_plugins/\_security)                 | Security           | Partial      | Full surface | the Security plugin runs natively (the full plugin API, more than a managed target exposes), but you now own the roles/mappings/internal-users config that AWS FGAC managed, the same ownership shift as snapshots |
| Vector search / k-NN (knn\_vector, \_plugins/\_knn)                                  | Vector & ML        | Supported    | Full surface | the k-NN plugin (knn\_vector + \_plugins/\_knn) is bundled in the OpenSearch distribution                                                                                                                          |

#### OpenSearch in the customer cluster

Tensor9 provisions OpenSearch on Kubernetes through an OpenSearchCluster resource or Helm chart and configures the application endpoint. Document and search requests go directly to the cluster's OpenSearch API. The customer operates the cluster and its storage.

<div className="t9-diagram-scroll" role="region" aria-label="Scrollable diagram" tabIndex={0}>
  <img className="t9-diagram-light" src="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iOTAwIiBoZWlnaHQ9IjE4MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgOTAwIDE4MCIgcm9sZT0iaW1nIiBhcmlhLWxhYmVsPSJBcHBsaWNhdGlvbiByZXF1ZXN0cyByZWFjaCBPcGVuU2VhcmNoIG9uIEt1YmVybmV0ZXMgZGlyZWN0bHkgdGhyb3VnaCBpdHMgT3BlblNlYXJjaCBlbmRwb2ludC4gVGVuc29yOSBwcm92aXNpb25zIHRoZSBjbHVzdGVyIGFuZCBjb25maWd1cmVzIGl0cyBlbmRwb2ludC4iPjxzdHlsZT50ZXh0e2ZvbnQtZmFtaWx5OkludGVyLC1hcHBsZS1zeXN0ZW0sQmxpbmtNYWNTeXN0ZW1Gb250LCdTZWdvZSBVSScsUm9ib3RvLCdIZWx2ZXRpY2EgTmV1ZScsQXJpYWwsc2Fucy1zZXJpZjtmaWxsOiMzMzQxNTV9PC9zdHlsZT4KPGRlZnM+PG1hcmtlciBpZD0ib3Mtcm91dGUiIG1hcmtlcldpZHRoPSI4IiBtYXJrZXJIZWlnaHQ9IjgiIHJlZlg9IjciIHJlZlk9IjQiIG9yaWVudD0iYXV0byI+PHBhdGggZD0iTTAsMCBMOCw0IEwwLDggWiIgZmlsbD0iIzY0NzQ4YiIvPjwvbWFya2VyPjwvZGVmcz4KPGcgc3Ryb2tlPSIjOTRhM2I4Ij48cmVjdCBmaWxsPSIjZjhmYWZjIiB4PSIyMCIgeT0iNDAiIHdpZHRoPSIyNDAiIGhlaWdodD0iMTAwIiByeD0iMTAiLz48cmVjdCBmaWxsPSIjZjhmYWZjIiB4PSIzMzAiIHk9IjQwIiB3aWR0aD0iMjQwIiBoZWlnaHQ9IjEwMCIgcng9IjEwIi8+PHJlY3QgZmlsbD0iI2Y4ZmFmYyIgeD0iNjQwIiB5PSI0MCIgd2lkdGg9IjI0MCIgaGVpZ2h0PSIxMDAiIHJ4PSIxMCIvPjwvZz4KPGcgZm9udC1mYW1pbHk9InN5c3RlbS11aSxzYW5zLXNlcmlmIiBmb250LXNpemU9IjE3IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmaWxsPSIjMGYxNzJhIj48dGV4dCB4PSIxNDAiIHk9Ijc4Ij5BcHBsaWNhdGlvbjwvdGV4dD48dGV4dCB4PSI0NTAiIHk9Ijc4Ij5Db25maWd1cmVkIGVuZHBvaW50PC90ZXh0Pjx0ZXh0IHg9Ijc2MCIgeT0iNzgiPk9wZW5TZWFyY2ggb24gS3ViZXJuZXRlczwvdGV4dD48L2c+CjxnIGZvbnQtZmFtaWx5PSJzeXN0ZW0tdWksc2Fucy1zZXJpZiIgZm9udC1zaXplPSIxNCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZmlsbD0iIzQ3NTU2OSI+PHRleHQgeD0iMTQwIiB5PSIxMDgiPk9wZW5TZWFyY2ggY2xpZW50PC90ZXh0Pjx0ZXh0IHg9IjQ1MCIgeT0iMTA4Ij5EaXJlY3QgT3BlblNlYXJjaCByZXF1ZXN0czwvdGV4dD48dGV4dCB4PSI3NjAiIHk9IjEwOCI+SW5kZXhlcyBhbmQgc2VhcmNoPC90ZXh0PjwvZz4KPGcgc3Ryb2tlPSIjNjQ3NDhiIiBzdHJva2Utd2lkdGg9IjIiIG1hcmtlci1lbmQ9InVybCgjb3Mtcm91dGUpIj48cGF0aCBkPSJNMjYwIDkwIEgzMjUiLz48cGF0aCBkPSJNNTcwIDkwIEg2MzUiLz48L2c+Cjwvc3ZnPg==" alt="Application requests reach OpenSearch on Kubernetes directly through its OpenSearch endpoint. Tensor9 provisions the cluster and configures its endpoint." />

  <img className="t9-diagram-dark" src="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iOTAwIiBoZWlnaHQ9IjE4MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgOTAwIDE4MCIgcm9sZT0iaW1nIiBhcmlhLWxhYmVsPSJBcHBsaWNhdGlvbiByZXF1ZXN0cyByZWFjaCBPcGVuU2VhcmNoIG9uIEt1YmVybmV0ZXMgZGlyZWN0bHkgdGhyb3VnaCBpdHMgT3BlblNlYXJjaCBlbmRwb2ludC4gVGVuc29yOSBwcm92aXNpb25zIHRoZSBjbHVzdGVyIGFuZCBjb25maWd1cmVzIGl0cyBlbmRwb2ludC4iPjxzdHlsZT50ZXh0e2ZvbnQtZmFtaWx5OkludGVyLC1hcHBsZS1zeXN0ZW0sQmxpbmtNYWNTeXN0ZW1Gb250LCdTZWdvZSBVSScsUm9ib3RvLCdIZWx2ZXRpY2EgTmV1ZScsQXJpYWwsc2Fucy1zZXJpZjtmaWxsOiNjYmQ1ZTF9PC9zdHlsZT4KPGRlZnM+PG1hcmtlciBpZD0ib3Mtcm91dGUiIG1hcmtlcldpZHRoPSI4IiBtYXJrZXJIZWlnaHQ9IjgiIHJlZlg9IjciIHJlZlk9IjQiIG9yaWVudD0iYXV0byI+PHBhdGggZD0iTTAsMCBMOCw0IEwwLDggWiIgZmlsbD0iIzY0NzQ4YiIvPjwvbWFya2VyPjwvZGVmcz4KPGcgc3Ryb2tlPSIjNDE0ZTYyIj48cmVjdCBmaWxsPSIjMWEyNjMxIiB4PSIyMCIgeT0iNDAiIHdpZHRoPSIyNDAiIGhlaWdodD0iMTAwIiByeD0iMTAiLz48cmVjdCBmaWxsPSIjMWEyNjMxIiB4PSIzMzAiIHk9IjQwIiB3aWR0aD0iMjQwIiBoZWlnaHQ9IjEwMCIgcng9IjEwIi8+PHJlY3QgZmlsbD0iIzFhMjYzMSIgeD0iNjQwIiB5PSI0MCIgd2lkdGg9IjI0MCIgaGVpZ2h0PSIxMDAiIHJ4PSIxMCIvPjwvZz4KPGcgZm9udC1mYW1pbHk9InN5c3RlbS11aSxzYW5zLXNlcmlmIiBmb250LXNpemU9IjE3IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmaWxsPSIjNTU3NmMyIj48dGV4dCB4PSIxNDAiIHk9Ijc4Ij5BcHBsaWNhdGlvbjwvdGV4dD48dGV4dCB4PSI0NTAiIHk9Ijc4Ij5Db25maWd1cmVkIGVuZHBvaW50PC90ZXh0Pjx0ZXh0IHg9Ijc2MCIgeT0iNzgiPk9wZW5TZWFyY2ggb24gS3ViZXJuZXRlczwvdGV4dD48L2c+CjxnIGZvbnQtZmFtaWx5PSJzeXN0ZW0tdWksc2Fucy1zZXJpZiIgZm9udC1zaXplPSIxNCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZmlsbD0iIzc2ODhhMiI+PHRleHQgeD0iMTQwIiB5PSIxMDgiPk9wZW5TZWFyY2ggY2xpZW50PC90ZXh0Pjx0ZXh0IHg9IjQ1MCIgeT0iMTA4Ij5EaXJlY3QgT3BlblNlYXJjaCByZXF1ZXN0czwvdGV4dD48dGV4dCB4PSI3NjAiIHk9IjEwOCI+SW5kZXhlcyBhbmQgc2VhcmNoPC90ZXh0PjwvZz4KPGcgc3Ryb2tlPSIjNjQ3NDhiIiBzdHJva2Utd2lkdGg9IjIiIG1hcmtlci1lbmQ9InVybCgjb3Mtcm91dGUpIj48cGF0aCBkPSJNMjYwIDkwIEgzMjUiLz48cGF0aCBkPSJNNTcwIDkwIEg2MzUiLz48L2c+Cjwvc3ZnPg==" alt="Application requests reach OpenSearch on Kubernetes directly through its OpenSearch endpoint. Tensor9 provisions the cluster and configures its endpoint." />
</div>

#### Engine and plugin compatibility

The target runs the OpenSearch engine and its bundled plugins. The listed document, index, search, aggregation, ingest and scripting operations retain their OpenSearch APIs. Match the engine and plugin versions to the application; sharing an engine name does not make different versions byte-identical.

The distribution includes k-NN vector search, SQL, PPL, Index State Management, Alerting, Anomaly Detection and ML Commons. Their native \_plugins APIs run on the cluster. Elasticsearch licensing endpoints \_license and \_xpack are not OpenSearch APIs.

#### Topology and access

Define node pools with CPU, memory and PersistentVolume capacity. A dedicated cluster\_manager pool maintains the cluster quorum; use at least three eligible nodes and distribute replicas across failure domains. OpenSearch renamed the master role to cluster\_manager in version 2.0. Configure shard allocation and plan rolling upgrades for the selected version.

The OpenSearch Security plugin controls roles, role mappings and internal users, including supported SAML, OIDC or LDAP sign-in and document- or field-level access. Translate AWS IAM-based access into this configuration. Replace bootstrap certificates and default credentials before exposing the cluster.

#### Storage and recovery

PersistentVolumes and their StorageClasses determine disk capacity, IOPS and encryption. They do not inherit a domain-specific AWS KMS key setting. Availability depends on node placement, quorum and index replicas; the self-managed cluster has no managed uptime SLA.

Register a snapshot repository and schedule creation and retention with OpenSearch Snapshot Management. An S3-compatible repository requires the repository-s3 plugin and object-store endpoint configuration. Keep backups outside the cluster's failure domain and verify a restore. OpenSearch Snapshot Management is distinct from Elasticsearch Snapshot Lifecycle Management.

#### Migration and operation

The cluster starts empty. Restore a compatible snapshot or reindex from the source, then verify index mappings and queries before cutover. Size shards, replicas and storage for the workload; shard sizes in the tens of gigabytes are a starting point to evaluate, not a fixed limit.

The customer operates Kubernetes capacity, storage expansion, cluster health, upgrades and snapshots. Tensor9 provisions the deployment and endpoint; it does not add a query proxy or a managed durability guarantee.

## On Azure

### Azure Native Elastic

| Operation                                                                            | Area               | Support        | Depth        | Notes                                                                                                                                          |
| ------------------------------------------------------------------------------------ | ------------------ | -------------- | ------------ | ---------------------------------------------------------------------------------------------------------------------------------------------- |
| Cluster health / stats / \_cat APIs                                                  | Cluster            | Supported      | Most usage   | -                                                                                                                                              |
| Tasks API (\_tasks)                                                                  | Cluster            | Supported      | Full surface | drives async reindex / update-by-query                                                                                                         |
| Bulk (\_bulk)                                                                        | Documents          | Supported      | Common       | batch index/update/delete                                                                                                                      |
| Delete document                                                                      | Documents          | Supported      | Common       | -                                                                                                                                              |
| Get document (GET /\{index}/\_doc/\{id})                                             | Documents          | Supported      | Common       | -                                                                                                                                              |
| Index document (PUT/POST /\{index}/\_doc)                                            | Documents          | Supported      | Common       | -                                                                                                                                              |
| Multi-get (\_mget)                                                                   | Documents          | Supported      | Most usage   | -                                                                                                                                              |
| Update document (\_update)                                                           | Documents          | Supported      | Common       | -                                                                                                                                              |
| Snapshots / backups (\_snapshot)                                                     | Durability         | Partial        | Full surface | Elastic SLM - a different API                                                                                                                  |
| Aliases (\_aliases)                                                                  | Index management   | Supported      | Most usage   | -                                                                                                                                              |
| Analyze (\_analyze)                                                                  | Index management   | Supported      | Full surface | tokenizer/analyzer testing                                                                                                                     |
| Create / Delete / Get index                                                          | Index management   | Supported      | Common       | -                                                                                                                                              |
| Data streams (\_data\_stream)                                                        | Index management   | Supported      | Full surface | -                                                                                                                                              |
| Open / Close index                                                                   | Index management   | Supported      | Full surface | -                                                                                                                                              |
| Put / Get mapping                                                                    | Index management   | Supported      | Common       | -                                                                                                                                              |
| Refresh / Flush / Forcemerge                                                         | Index management   | Supported      | Most usage   | -                                                                                                                                              |
| Rollover / Shrink / Split / Clone                                                    | Index management   | Supported      | Full surface | -                                                                                                                                              |
| Update / Get settings                                                                | Index management   | Supported      | Most usage   | -                                                                                                                                              |
| Index & component templates (\_index\_template / \_component\_template)              | Ingest & templates | Supported      | Full surface | -                                                                                                                                              |
| Ingest pipelines (\_ingest/pipeline: put / get / delete / \_simulate)                | Ingest & templates | Supported      | Full surface | -                                                                                                                                              |
| License / X-Pack (\_license, \_xpack)                                                | Licensing          | Out of scope   | Full surface | Elasticsearch licensing endpoints are outside the OpenSearch mapping.                                                                          |
| Index State Management (\_plugins/\_ism)                                             | Lifecycle          | Adapter-served | Full surface | Maps representable ISM actions to ILM phases; custom states and transitions cannot round-trip.                                                 |
| Alerting / anomaly detection / ML Commons (\_plugins/\*)                             | Observability & ML | Adapter-served | Full surface | ES-native \_ml/\_watcher, several Platinum-gated; notifications/observability have no ES REST equivalent                                       |
| Notifications / observability (\_plugins/\_notifications, \_plugins/\_observability) | Observability & ML | Out of scope   | Full surface | These OpenSearch APIs are outside the Elasticsearch mapping; use target-native configuration or change the application.                        |
| PPL (\_plugins/\_ppl)                                                                | Query languages    | Out of scope   | Full surface | no PPL in Elasticsearch; ES\|QL is a different language                                                                                        |
| SQL (\_plugins/\_sql)                                                                | Query languages    | Adapter-served | Full surface | ES \_sql at a different path/shape                                                                                                             |
| Stored scripts & Painless (\_scripts, \_scripts/painless/\_execute)                  | Scripting          | Supported      | Full surface | -                                                                                                                                              |
| Aggregations                                                                         | Search             | Supported      | Common       | metrics + bucket aggregations in \_search                                                                                                      |
| Count / Explain / Suggest                                                            | Search             | Supported      | Most usage   | -                                                                                                                                              |
| Field capabilities (\_field\_caps)                                                   | Search             | Supported      | Full surface | -                                                                                                                                              |
| Multi-search (\_msearch)                                                             | Search             | Supported      | Most usage   | -                                                                                                                                              |
| Point-in-time (\_search/point\_in\_time)                                             | Search             | Partial        | Most usage   | ES uses \_pit, not \_search/point\_in\_time - path rewrite                                                                                     |
| Reindex / Update-by-query / Delete-by-query                                          | Search             | Supported      | Full surface | -                                                                                                                                              |
| Scroll (\_search/scroll)                                                             | Search             | Supported      | Most usage   | deep pagination                                                                                                                                |
| Search (\_search + query DSL)                                                        | Search             | Supported      | Common       | -                                                                                                                                              |
| Search templates (\_search/template, \_render/template)                              | Search             | Supported      | Full surface | -                                                                                                                                              |
| Term vectors (\_termvectors / \_mtermvectors)                                        | Search             | Supported      | Full surface | -                                                                                                                                              |
| Security plugin / fine-grained access control (\_plugins/\_security)                 | Security           | Out of scope   | Full surface | disjoint API + model - \_security/\* vs \_plugins/\_security/\*; some OpenSearch-free FLS/DLS/multi-tenancy are Platinum-gated or absent on ES |
| Vector search / k-NN (knn\_vector, \_plugins/\_knn)                                  | Vector & ML        | Adapter-served | Full surface | rewrite knn\_vector→dense\_vector, OpenSearch knn query→ES knn option                                                                          |

#### OpenSearch requests on Elasticsearch

Azure Native Elastic runs Elasticsearch 8.x. The Tensor9 adapter accepts the application's OpenSearch requests, translates supported APIs and authentication, and sends them to the managed Elasticsearch endpoint. Tensor9 provisions the Elastic resource in the customer's Azure tenant through the Azure Native integration. Elastic operates Elasticsearch; the resource is purchased and billed through the customer's Azure subscription.

<div className="t9-diagram-scroll" role="region" aria-label="Scrollable diagram" tabIndex={0}>
  <img className="t9-diagram-light" src="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iOTAwIiBoZWlnaHQ9IjE4MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgOTAwIDE4MCIgcm9sZT0iaW1nIiBhcmlhLWxhYmVsPSJBcHBsaWNhdGlvbiByZXF1ZXN0cyByZWFjaCBBenVyZSBOYXRpdmUgRWxhc3RpYyB0aHJvdWdoIHRoZSBUZW5zb3I5IHRyYW5zbGF0aW5nIGFkYXB0ZXIuIFRoZSBhZGFwdGVyIHRyYW5zbGF0ZXMgYXV0aGVudGljYXRpb24gYW5kIHN1cHBvcnRlZCBBUElzLiI+PHN0eWxlPnRleHR7Zm9udC1mYW1pbHk6SW50ZXIsLWFwcGxlLXN5c3RlbSxCbGlua01hY1N5c3RlbUZvbnQsJ1NlZ29lIFVJJyxSb2JvdG8sJ0hlbHZldGljYSBOZXVlJyxBcmlhbCxzYW5zLXNlcmlmO2ZpbGw6IzMzNDE1NX08L3N0eWxlPgo8ZGVmcz48bWFya2VyIGlkPSJvcy1yb3V0ZSIgbWFya2VyV2lkdGg9IjgiIG1hcmtlckhlaWdodD0iOCIgcmVmWD0iNyIgcmVmWT0iNCIgb3JpZW50PSJhdXRvIj48cGF0aCBkPSJNMCwwIEw4LDQgTDAsOCBaIiBmaWxsPSIjNjQ3NDhiIi8+PC9tYXJrZXI+PC9kZWZzPgo8ZyBzdHJva2U9IiM5NGEzYjgiPjxyZWN0IGZpbGw9IiNmOGZhZmMiIHg9IjIwIiB5PSI0MCIgd2lkdGg9IjI0MCIgaGVpZ2h0PSIxMDAiIHJ4PSIxMCIvPjxyZWN0IGZpbGw9IiNmOGZhZmMiIHg9IjMzMCIgeT0iNDAiIHdpZHRoPSIyNDAiIGhlaWdodD0iMTAwIiByeD0iMTAiLz48cmVjdCBmaWxsPSIjZjhmYWZjIiB4PSI2NDAiIHk9IjQwIiB3aWR0aD0iMjQwIiBoZWlnaHQ9IjEwMCIgcng9IjEwIi8+PC9nPgo8ZyBmb250LWZhbWlseT0ic3lzdGVtLXVpLHNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTciIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZpbGw9IiMwZjE3MmEiPjx0ZXh0IHg9IjE0MCIgeT0iNzgiPkFwcGxpY2F0aW9uPC90ZXh0Pjx0ZXh0IHg9IjQ1MCIgeT0iNzgiPlRlbnNvcjkgYWRhcHRlcjwvdGV4dD48dGV4dCB4PSI3NjAiIHk9Ijc4Ij5BenVyZSBOYXRpdmUgRWxhc3RpYzwvdGV4dD48L2c+CjxnIGZvbnQtZmFtaWx5PSJzeXN0ZW0tdWksc2Fucy1zZXJpZiIgZm9udC1zaXplPSIxNCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZmlsbD0iIzQ3NTU2OSI+PHRleHQgeD0iMTQwIiB5PSIxMDgiPk9wZW5TZWFyY2ggY2xpZW50PC90ZXh0Pjx0ZXh0IHg9IjQ1MCIgeT0iMTA4Ij5UcmFuc2xhdGUgQVBJIGFuZCBjcmVkZW50aWFsczwvdGV4dD48dGV4dCB4PSI3NjAiIHk9IjEwOCI+SW5kZXhlcyBhbmQgc2VhcmNoPC90ZXh0PjwvZz4KPGcgc3Ryb2tlPSIjNjQ3NDhiIiBzdHJva2Utd2lkdGg9IjIiIG1hcmtlci1lbmQ9InVybCgjb3Mtcm91dGUpIj48cGF0aCBkPSJNMjYwIDkwIEgzMjUiLz48cGF0aCBkPSJNNTcwIDkwIEg2MzUiLz48L2c+Cjwvc3ZnPg==" alt="Application requests reach Azure Native Elastic through the Tensor9 translating adapter. The adapter translates authentication and supported APIs." />

  <img className="t9-diagram-dark" src="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iOTAwIiBoZWlnaHQ9IjE4MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgOTAwIDE4MCIgcm9sZT0iaW1nIiBhcmlhLWxhYmVsPSJBcHBsaWNhdGlvbiByZXF1ZXN0cyByZWFjaCBBenVyZSBOYXRpdmUgRWxhc3RpYyB0aHJvdWdoIHRoZSBUZW5zb3I5IHRyYW5zbGF0aW5nIGFkYXB0ZXIuIFRoZSBhZGFwdGVyIHRyYW5zbGF0ZXMgYXV0aGVudGljYXRpb24gYW5kIHN1cHBvcnRlZCBBUElzLiI+PHN0eWxlPnRleHR7Zm9udC1mYW1pbHk6SW50ZXIsLWFwcGxlLXN5c3RlbSxCbGlua01hY1N5c3RlbUZvbnQsJ1NlZ29lIFVJJyxSb2JvdG8sJ0hlbHZldGljYSBOZXVlJyxBcmlhbCxzYW5zLXNlcmlmO2ZpbGw6I2NiZDVlMX08L3N0eWxlPgo8ZGVmcz48bWFya2VyIGlkPSJvcy1yb3V0ZSIgbWFya2VyV2lkdGg9IjgiIG1hcmtlckhlaWdodD0iOCIgcmVmWD0iNyIgcmVmWT0iNCIgb3JpZW50PSJhdXRvIj48cGF0aCBkPSJNMCwwIEw4LDQgTDAsOCBaIiBmaWxsPSIjNjQ3NDhiIi8+PC9tYXJrZXI+PC9kZWZzPgo8ZyBzdHJva2U9IiM0MTRlNjIiPjxyZWN0IGZpbGw9IiMxYTI2MzEiIHg9IjIwIiB5PSI0MCIgd2lkdGg9IjI0MCIgaGVpZ2h0PSIxMDAiIHJ4PSIxMCIvPjxyZWN0IGZpbGw9IiMxYTI2MzEiIHg9IjMzMCIgeT0iNDAiIHdpZHRoPSIyNDAiIGhlaWdodD0iMTAwIiByeD0iMTAiLz48cmVjdCBmaWxsPSIjMWEyNjMxIiB4PSI2NDAiIHk9IjQwIiB3aWR0aD0iMjQwIiBoZWlnaHQ9IjEwMCIgcng9IjEwIi8+PC9nPgo8ZyBmb250LWZhbWlseT0ic3lzdGVtLXVpLHNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTciIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZpbGw9IiM1NTc2YzIiPjx0ZXh0IHg9IjE0MCIgeT0iNzgiPkFwcGxpY2F0aW9uPC90ZXh0Pjx0ZXh0IHg9IjQ1MCIgeT0iNzgiPlRlbnNvcjkgYWRhcHRlcjwvdGV4dD48dGV4dCB4PSI3NjAiIHk9Ijc4Ij5BenVyZSBOYXRpdmUgRWxhc3RpYzwvdGV4dD48L2c+CjxnIGZvbnQtZmFtaWx5PSJzeXN0ZW0tdWksc2Fucy1zZXJpZiIgZm9udC1zaXplPSIxNCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZmlsbD0iIzc2ODhhMiI+PHRleHQgeD0iMTQwIiB5PSIxMDgiPk9wZW5TZWFyY2ggY2xpZW50PC90ZXh0Pjx0ZXh0IHg9IjQ1MCIgeT0iMTA4Ij5UcmFuc2xhdGUgQVBJIGFuZCBjcmVkZW50aWFsczwvdGV4dD48dGV4dCB4PSI3NjAiIHk9IjEwOCI+SW5kZXhlcyBhbmQgc2VhcmNoPC90ZXh0PjwvZz4KPGcgc3Ryb2tlPSIjNjQ3NDhiIiBzdHJva2Utd2lkdGg9IjIiIG1hcmtlci1lbmQ9InVybCgjb3Mtcm91dGUpIj48cGF0aCBkPSJNMjYwIDkwIEgzMjUiLz48cGF0aCBkPSJNNTcwIDkwIEg2MzUiLz48L2c+Cjwvc3ZnPg==" alt="Application requests reach Azure Native Elastic through the Tensor9 translating adapter. The adapter translates authentication and supported APIs." />
</div>

#### Core requests and authentication

The adapter forwards the supported document, search, aggregation, index, cluster, ingest and scripting operations. It translates request and response differences, including the point-in-time path from \_search/point\_in\_time to \_pit. AWS SigV4 authentication is checked by the adapter; target requests use Elastic credentials or API keys. Configure target permissions in Elastic's security model.

Elasticsearch 8.x provides compatible-with=7 headers for its earlier REST API contract. The adapter uses that facility where applicable, alongside the required translations. It does not make every OpenSearch request or client version compatible. Validate the application's queries, response parsing and client behavior against the listed operations. See [Elastic's API compatibility documentation](https://www.elastic.co/docs/reference/elasticsearch/rest-apis/compatibility).

#### Plugin translations

OpenSearch and Elasticsearch use different plugin APIs. The mapping translates k-NN vector mappings from knn\_vector to dense\_vector and converts the query to Elasticsearch's knn form. SQL requests move from \_plugins/\_sql to \_sql with translated response fields. Index State Management policies map to Elasticsearch Index Lifecycle Management where their actions can be represented. Custom ISM states and transitions do not round-trip through ILM's fixed phases.

The described alerting, anomaly-detection and machine-learning mappings use Elasticsearch \_watcher and \_ml capabilities. Some need a paid Elastic subscription. The operation table separates those translations from excluded APIs: PPL, the OpenSearch Security API, notifications and observability objects remain outside the mapping. Elasticsearch \_license and \_xpack are not OpenSearch APIs.

#### Deployment and availability

The Azure resource does not expose the full deployment topology. Set size and topology in the Elastic Cloud console. The documented default is 16 GB RAM, 560 GB storage and two availability zones, with instances up to 256 GB RAM. The subscription determines commercial features and the applicable availability commitment. Elastic Cloud publishes monthly availability commitments of 99.5%, 99.9% and 99.95% for one-, two- and three-zone deployments, subject to the subscription and high-availability conditions. Choose topology and subscription together.

The target uses Elastic security configuration, API keys and single sign-on rather than OpenSearch Security roles. Document- and field-level security and other commercial features depend on the purchased subscription. The hosted offering's subscription conditions apply regardless of the source-code license. Elastic added an AGPLv3 option for the free source portions in 2024; see its [licensing FAQ](https://www.elastic.co/pricing/faq/licensing/).

#### Snapshots and migration

The deployment starts empty. Move data with a compatible remote reindex or bulk export/import workflow; do not assume an OpenSearch snapshot restores across the engine fork. Review mappings, analyzers and index settings before loading data, and verify representative queries before switching traffic.

Elastic Snapshot Lifecycle Management controls target backup schedules and retention. Preserve the application's recovery requirements when replacing AWS-managed snapshots. The adapter does not translate OpenSearch Security configuration, PPL or notification/observability objects; these need target-native configuration or an application change.

#### Sizing and performance

Choose shard layout, replicas, data tiers and memory for the application's indexing and query workload. Published engine benchmarks describe their particular versions and datasets; they do not measure this adaptation. Measure the deployed application, including translated operations, when selecting capacity.

## On DigitalOcean

### OpenSearch Domain

| Operation                                                                            | Area               | Support   | Depth        | Notes                                            |
| ------------------------------------------------------------------------------------ | ------------------ | --------- | ------------ | ------------------------------------------------ |
| Cluster health / stats / \_cat APIs                                                  | Cluster            | Supported | Most usage   | -                                                |
| Tasks API (\_tasks)                                                                  | Cluster            | Supported | Full surface | drives async reindex / update-by-query           |
| Bulk (\_bulk)                                                                        | Documents          | Supported | Common       | batch index/update/delete                        |
| Delete document                                                                      | Documents          | Supported | Common       | -                                                |
| Get document (GET /\{index}/\_doc/\{id})                                             | Documents          | Supported | Common       | -                                                |
| Index document (PUT/POST /\{index}/\_doc)                                            | Documents          | Supported | Common       | -                                                |
| Multi-get (\_mget)                                                                   | Documents          | Supported | Most usage   | -                                                |
| Update document (\_update)                                                           | Documents          | Supported | Common       | -                                                |
| Snapshots / backups (\_snapshot)                                                     | Durability         | Supported | Full surface | native - the AWS OpenSearch domain is kept as-is |
| Aliases (\_aliases)                                                                  | Index management   | Supported | Most usage   | -                                                |
| Analyze (\_analyze)                                                                  | Index management   | Supported | Full surface | tokenizer/analyzer testing                       |
| Create / Delete / Get index                                                          | Index management   | Supported | Common       | -                                                |
| Data streams (\_data\_stream)                                                        | Index management   | Supported | Full surface | -                                                |
| Open / Close index                                                                   | Index management   | Supported | Full surface | -                                                |
| Put / Get mapping                                                                    | Index management   | Supported | Common       | -                                                |
| Refresh / Flush / Forcemerge                                                         | Index management   | Supported | Most usage   | -                                                |
| Rollover / Shrink / Split / Clone                                                    | Index management   | Supported | Full surface | -                                                |
| Update / Get settings                                                                | Index management   | Supported | Most usage   | -                                                |
| Index & component templates (\_index\_template / \_component\_template)              | Ingest & templates | Supported | Full surface | -                                                |
| Ingest pipelines (\_ingest/pipeline: put / get / delete / \_simulate)                | Ingest & templates | Supported | Full surface | -                                                |
| License / X-Pack (\_license, \_xpack)                                                | Licensing          | Supported | Full surface | n/a on OpenSearch                                |
| Index State Management (\_plugins/\_ism)                                             | Lifecycle          | Supported | Full surface | native - the AWS OpenSearch domain is kept as-is |
| Alerting / anomaly detection / ML Commons (\_plugins/\*)                             | Observability & ML | Supported | Full surface | native - the AWS OpenSearch domain is kept as-is |
| Notifications / observability (\_plugins/\_notifications, \_plugins/\_observability) | Observability & ML | Supported | Full surface | native - the AWS OpenSearch domain is kept as-is |
| PPL (\_plugins/\_ppl)                                                                | Query languages    | Supported | Full surface | native - the AWS OpenSearch domain is kept as-is |
| SQL (\_plugins/\_sql)                                                                | Query languages    | Supported | Full surface | native - the AWS OpenSearch domain is kept as-is |
| Stored scripts & Painless (\_scripts, \_scripts/painless/\_execute)                  | Scripting          | Supported | Full surface | -                                                |
| Aggregations                                                                         | Search             | Supported | Common       | metrics + bucket aggregations in \_search        |
| Count / Explain / Suggest                                                            | Search             | Supported | Most usage   | -                                                |
| Field capabilities (\_field\_caps)                                                   | Search             | Supported | Full surface | -                                                |
| Multi-search (\_msearch)                                                             | Search             | Supported | Most usage   | -                                                |
| Point-in-time (\_search/point\_in\_time)                                             | Search             | Supported | Most usage   | native - the AWS OpenSearch domain is kept as-is |
| Reindex / Update-by-query / Delete-by-query                                          | Search             | Supported | Full surface | -                                                |
| Scroll (\_search/scroll)                                                             | Search             | Supported | Most usage   | deep pagination                                  |
| Search (\_search + query DSL)                                                        | Search             | Supported | Common       | -                                                |
| Search templates (\_search/template, \_render/template)                              | Search             | Supported | Full surface | -                                                |
| Term vectors (\_termvectors / \_mtermvectors)                                        | Search             | Supported | Full surface | -                                                |
| Security plugin / fine-grained access control (\_plugins/\_security)                 | Security           | Supported | Full surface | native - the AWS OpenSearch domain is kept as-is |
| Vector search / k-NN (knn\_vector, \_plugins/\_knn)                                  | Vector & ML        | Supported | Full surface | native - the AWS OpenSearch domain is kept as-is |

#### Keep the managed domain

The application can continue using its existing AWS OpenSearch domain while other services run in the target environment. AWS continues to operate the domain. Its engine, plugin APIs, security configuration, and managed snapshots stay in place.

#### Connectivity and ownership

The customer deployment must be able to reach and authenticate to the AWS domain endpoint. This choice keeps an AWS service dependency and its existing operational ownership.

### DigitalOcean Managed OpenSearch

| Operation                                                                            | Area               | Support   | Depth        | Notes                                                                                                          |
| ------------------------------------------------------------------------------------ | ------------------ | --------- | ------------ | -------------------------------------------------------------------------------------------------------------- |
| Cluster health / stats / \_cat APIs                                                  | Cluster            | Supported | Most usage   | -                                                                                                              |
| Tasks API (\_tasks)                                                                  | Cluster            | Supported | Full surface | drives async reindex / update-by-query                                                                         |
| Bulk (\_bulk)                                                                        | Documents          | Supported | Common       | batch index/update/delete                                                                                      |
| Delete document                                                                      | Documents          | Supported | Common       | -                                                                                                              |
| Get document (GET /\{index}/\_doc/\{id})                                             | Documents          | Supported | Common       | -                                                                                                              |
| Index document (PUT/POST /\{index}/\_doc)                                            | Documents          | Supported | Common       | -                                                                                                              |
| Multi-get (\_mget)                                                                   | Documents          | Supported | Most usage   | -                                                                                                              |
| Update document (\_update)                                                           | Documents          | Supported | Common       | -                                                                                                              |
| Snapshots / backups (\_snapshot)                                                     | Durability         | Partial   | Full surface | managed hourly (24h) + daily (3d) backups + a 7-day PITR window - a different model from AWS managed snapshots |
| Aliases (\_aliases)                                                                  | Index management   | Supported | Most usage   | -                                                                                                              |
| Analyze (\_analyze)                                                                  | Index management   | Supported | Full surface | tokenizer/analyzer testing                                                                                     |
| Create / Delete / Get index                                                          | Index management   | Supported | Common       | -                                                                                                              |
| Data streams (\_data\_stream)                                                        | Index management   | Supported | Full surface | -                                                                                                              |
| Open / Close index                                                                   | Index management   | Supported | Full surface | -                                                                                                              |
| Put / Get mapping                                                                    | Index management   | Supported | Common       | -                                                                                                              |
| Refresh / Flush / Forcemerge                                                         | Index management   | Supported | Most usage   | -                                                                                                              |
| Rollover / Shrink / Split / Clone                                                    | Index management   | Supported | Full surface | -                                                                                                              |
| Update / Get settings                                                                | Index management   | Supported | Most usage   | -                                                                                                              |
| Index & component templates (\_index\_template / \_component\_template)              | Ingest & templates | Supported | Full surface | -                                                                                                              |
| Ingest pipelines (\_ingest/pipeline: put / get / delete / \_simulate)                | Ingest & templates | Supported | Full surface | -                                                                                                              |
| License / X-Pack (\_license, \_xpack)                                                | Licensing          | Supported | Full surface | no license API - OpenSearch (Apache-2.0)                                                                       |
| Index State Management (\_plugins/\_ism)                                             | Lifecycle          | Supported | Full surface | Index State Management runs natively via the ISM plugin and OpenSearch's ISM configuration                     |
| Alerting / anomaly detection / ML Commons (\_plugins/\*)                             | Observability & ML | Supported | Full surface | Alerting, Anomaly Detection and ML Commons are all bundled                                                     |
| Notifications / observability (\_plugins/\_notifications, \_plugins/\_observability) | Observability & ML | Supported | Full surface | Alerting, Anomaly Detection and ML Commons are all bundled                                                     |
| PPL (\_plugins/\_ppl)                                                                | Query languages    | Supported | Full surface | PPL (\_plugins/\_ppl) is bundled                                                                               |
| SQL (\_plugins/\_sql)                                                                | Query languages    | Supported | Full surface | the SQL plugin (\_plugins/\_sql) is bundled - OpenSearch 2.19                                                  |
| Stored scripts & Painless (\_scripts, \_scripts/painless/\_execute)                  | Scripting          | Supported | Full surface | -                                                                                                              |
| Aggregations                                                                         | Search             | Supported | Common       | metrics + bucket aggregations in \_search                                                                      |
| Count / Explain / Suggest                                                            | Search             | Supported | Most usage   | -                                                                                                              |
| Field capabilities (\_field\_caps)                                                   | Search             | Supported | Full surface | -                                                                                                              |
| Multi-search (\_msearch)                                                             | Search             | Supported | Most usage   | -                                                                                                              |
| Point-in-time (\_search/point\_in\_time)                                             | Search             | Supported | Most usage   | native - OpenSearch engine                                                                                     |
| Reindex / Update-by-query / Delete-by-query                                          | Search             | Supported | Full surface | -                                                                                                              |
| Scroll (\_search/scroll)                                                             | Search             | Supported | Most usage   | deep pagination                                                                                                |
| Search (\_search + query DSL)                                                        | Search             | Supported | Common       | -                                                                                                              |
| Search templates (\_search/template, \_render/template)                              | Search             | Supported | Full surface | -                                                                                                              |
| Term vectors (\_termvectors / \_mtermvectors)                                        | Search             | Supported | Full surface | -                                                                                                              |
| Security plugin / fine-grained access control (\_plugins/\_security)                 | Security           | Partial   | Full surface | the Security plugin is present, but DigitalOcean exposes only the doadmin user - no extra users/roles via DO   |
| Vector search / k-NN (knn\_vector, \_plugins/\_knn)                                  | Vector & ML        | Supported | Full surface | k-NN + Neural search are bundled in the DigitalOcean OpenSearch distribution                                   |

#### How it works

On AWS your app talks to an **Amazon OpenSearch** domain over the OpenSearch REST API. Its OpenSearch or Elasticsearch client opens a connection to the domain endpoint and issues `_bulk`, `_search`, and the rest. To run that same app on DigitalOcean, the compiler provisions a **DigitalOcean Managed OpenSearch** cluster and points your client's endpoint at it.

Tensor9 configures the client endpoint to connect directly to the target cluster at build time. Your app keeps the same clients and the same request formats; they speak the same OpenSearch wire straight to the DigitalOcean cluster. No Tensor9 component handles these requests (there is no translating adapter here), so every index and query runs against DigitalOcean's OpenSearch engine directly, at the cluster's own latency.

DigitalOcean runs the cluster as a managed database: it provisions the nodes and operates the backups, failover, and version upgrades. The cluster it hands you starts empty, so your data moves over separately.

<div className="t9-diagram-scroll" role="region" aria-label="Scrollable diagram" tabIndex={0}>
  <img className="t9-diagram-light" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4MzYiIGhlaWdodD0iMTgwIiB2aWV3Qm94PSIwIDAgODM2IDE4MCIgcm9sZT0iaW1nIiBhcmlhLWxhYmVsPSJCZWZvcmU6IG9uIEFXUyB5b3VyIGFwcCdzIE9wZW5TZWFyY2ggY2xpZW50IHNwZWFrcyB0aGUgT3BlblNlYXJjaCBSRVNUIEFQSSB0byBhbiBBV1MtbWFuYWdlZCBBbWF6b24gT3BlblNlYXJjaCBkb21haW4uIEFmdGVyOiBvbiBEaWdpdGFsT2NlYW4gdGhlIHNhbWUgYXBwIGFuZCB0aGUgc2FtZSBjbGllbnRzIHNwZWFrIHRoZSBzYW1lIE9wZW5TZWFyY2ggd2lyZSBzdHJhaWdodCB0byBhIERpZ2l0YWxPY2VhbiBNYW5hZ2VkIE9wZW5TZWFyY2ggMi4xOSBjbHVzdGVyLCB3aXRoIG5vIHByb3h5IGluIHRoZSBkYXRhIHBhdGguIj48c3R5bGU+dGV4dHtmb250LWZhbWlseTpJbnRlciwtYXBwbGUtc3lzdGVtLEJsaW5rTWFjU3lzdGVtRm9udCwnU2Vnb2UgVUknLFJvYm90bywnSGVsdmV0aWNhIE5ldWUnLEFyaWFsLHNhbnMtc2VyaWY7ZmlsbDojMzM0MTU1fTwvc3R5bGU+CjxyZWN0IHg9IjE2IiB5PSI0MCIgd2lkdGg9IjM5MCIgaGVpZ2h0PSIxMjQiIHJ4PSIxNCIgZmlsbD0iI2Y4ZmFmYyIgc3Ryb2tlPSIjY2JkNWUxIiBzdHJva2Utd2lkdGg9IjEuNCIgc3Ryb2tlLWRhc2hhcnJheT0iNSA1Ii8+Cjx0ZXh0IHg9IjMyIiB5PSI2MiIgc3R5bGU9ImZvbnQ6IDcwMCAxMHB4IEludGVyLCBzYW5zLXNlcmlmOyBsZXR0ZXItc3BhY2luZzogMS4zcHg7IGZpbGw6ICM5NGEzYjgiPk9OIEFXUyBUT0RBWTwvdGV4dD4KPHJlY3QgeD0iMzAiIHk9IjgwIiB3aWR0aD0iMTY0IiBoZWlnaHQ9IjYyIiByeD0iMTEiIGZpbGw9IiNmZmYiIHN0cm9rZT0iI2UyZThmMCIgc3Ryb2tlLXdpZHRoPSIxLjUiLz4KPHRleHQgeD0iMTEyIiB5PSIxMDYiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiA2NTAgMTMuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjMGYxNzJhIj5Zb3VyIGFwcDwvdGV4dD4KPHRleHQgeD0iMTEyIiB5PSIxMjQiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjNjQ3NDhiIj5PcGVuU2VhcmNoIGNsaWVudDwvdGV4dD4KPGxpbmUgeDE9IjE5NCIgeTE9IjExMSIgeDI9IjIyMiIgeTI9IjExMSIgc3Ryb2tlPSIjOTRhM2I4IiBzdHJva2Utd2lkdGg9IjIiLz4KPHJlY3QgeD0iMjIyIiB5PSI4MCIgd2lkdGg9IjE2NCIgaGVpZ2h0PSI2MiIgcng9IjExIiBmaWxsPSIjZmZmIiBzdHJva2U9IiNjYmQ1ZTEiIHN0cm9rZS13aWR0aD0iMS41Ii8+Cjx0ZXh0IHg9IjMwNCIgeT0iMTA1IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogNjUwIDEzLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzBmMTcyYTsgZm9udC1zaXplOjEycHgiPkFtYXpvbiBPcGVuU2VhcmNoPC90ZXh0Pgo8dGV4dCB4PSIzMDQiIHk9IjEyMyIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDExcHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICM2NDc0OGIiPkFXUy1tYW5hZ2VkIGRvbWFpbjwvdGV4dD4KPHJlY3QgeD0iNDMwIiB5PSI0MCIgd2lkdGg9IjM5MCIgaGVpZ2h0PSIxMjQiIHJ4PSIxNCIgZmlsbD0iI2Y4ZmFmYyIgc3Ryb2tlPSIjY2JkNWUxIiBzdHJva2Utd2lkdGg9IjEuNCIgc3Ryb2tlLWRhc2hhcnJheT0iNSA1Ii8+Cjx0ZXh0IHg9IjQ0NiIgeT0iNjIiIHN0eWxlPSJmb250OiA3MDAgMTBweCBJbnRlciwgc2Fucy1zZXJpZjsgbGV0dGVyLXNwYWNpbmc6IDEuM3B4OyBmaWxsOiAjOTRhM2I4OyBmaWxsOiMwNDc4NTciPk9OIERJR0lUQUxPQ0VBTjwvdGV4dD4KPHJlY3QgeD0iNDQ0IiB5PSI4MCIgd2lkdGg9IjE2NCIgaGVpZ2h0PSI2MiIgcng9IjExIiBmaWxsPSIjZmZmIiBzdHJva2U9IiNlMmU4ZjAiIHN0cm9rZS13aWR0aD0iMS41Ii8+Cjx0ZXh0IHg9IjUyNiIgeT0iMTA2IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogNjUwIDEzLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzBmMTcyYSI+WW91ciBhcHA8L3RleHQ+Cjx0ZXh0IHg9IjUyNiIgeT0iMTI0IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogNjAwIDExcHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICMwNTk2NjkiPnNhbWUgY2xpZW50czwvdGV4dD4KPGxpbmUgeDE9IjYwOCIgeTE9IjExMSIgeDI9IjYzNiIgeTI9IjExMSIgc3Ryb2tlPSIjMDU5NjY5IiBzdHJva2Utd2lkdGg9IjIiLz4KPHJlY3QgeD0iNjM2IiB5PSI4MCIgd2lkdGg9IjE2NCIgaGVpZ2h0PSI2MiIgcng9IjExIiBmaWxsPSIjZWNmZGY1IiBzdHJva2U9IiMwNTk2NjkiIHN0cm9rZS13aWR0aD0iMS43Ii8+Cjx0ZXh0IHg9IjcxOCIgeT0iMTA1IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogNzAwIDEzLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzA0Nzg1NzsgZm9udC1zaXplOjExLjVweCI+RE8gTWFuYWdlZCBPcGVuU2VhcmNoPC90ZXh0Pgo8dGV4dCB4PSI3MTgiIHk9IjEyMyIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDEwLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzA0Nzg1NyI+T3BlblNlYXJjaCAyLjE5PC90ZXh0Pgo8L3N2Zz4=" alt="Before: on AWS your app's OpenSearch client speaks the OpenSearch REST API to an AWS-managed Amazon OpenSearch domain. After: on DigitalOcean the same app and the same clients speak the same OpenSearch wire straight to a DigitalOcean Managed OpenSearch 2.19 cluster, with no proxy in the data path." />

  <img className="t9-diagram-dark" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4MzYiIGhlaWdodD0iMTgwIiB2aWV3Qm94PSIwIDAgODM2IDE4MCIgcm9sZT0iaW1nIiBhcmlhLWxhYmVsPSJCZWZvcmU6IG9uIEFXUyB5b3VyIGFwcCdzIE9wZW5TZWFyY2ggY2xpZW50IHNwZWFrcyB0aGUgT3BlblNlYXJjaCBSRVNUIEFQSSB0byBhbiBBV1MtbWFuYWdlZCBBbWF6b24gT3BlblNlYXJjaCBkb21haW4uIEFmdGVyOiBvbiBEaWdpdGFsT2NlYW4gdGhlIHNhbWUgYXBwIGFuZCB0aGUgc2FtZSBjbGllbnRzIHNwZWFrIHRoZSBzYW1lIE9wZW5TZWFyY2ggd2lyZSBzdHJhaWdodCB0byBhIERpZ2l0YWxPY2VhbiBNYW5hZ2VkIE9wZW5TZWFyY2ggMi4xOSBjbHVzdGVyLCB3aXRoIG5vIHByb3h5IGluIHRoZSBkYXRhIHBhdGguIj48c3R5bGU+dGV4dHtmb250LWZhbWlseTpJbnRlciwtYXBwbGUtc3lzdGVtLEJsaW5rTWFjU3lzdGVtRm9udCwnU2Vnb2UgVUknLFJvYm90bywnSGVsdmV0aWNhIE5ldWUnLEFyaWFsLHNhbnMtc2VyaWY7ZmlsbDojY2JkNWUxfTwvc3R5bGU+CjxyZWN0IHg9IjE2IiB5PSI0MCIgd2lkdGg9IjM5MCIgaGVpZ2h0PSIxMjQiIHJ4PSIxNCIgZmlsbD0iIzFhMjYzMSIgc3Ryb2tlPSIjM2Q0ZjY2IiBzdHJva2Utd2lkdGg9IjEuNCIgc3Ryb2tlLWRhc2hhcnJheT0iNSA1Ii8+Cjx0ZXh0IHg9IjMyIiB5PSI2MiIgc3R5bGU9ImZvbnQ6IDcwMCAxMHB4IEludGVyLCBzYW5zLXNlcmlmOyBsZXR0ZXItc3BhY2luZzogMS4zcHg7IGZpbGw6ICM5NGEzYjgiPk9OIEFXUyBUT0RBWTwvdGV4dD4KPHJlY3QgeD0iMzAiIHk9IjgwIiB3aWR0aD0iMTY0IiBoZWlnaHQ9IjYyIiByeD0iMTEiIGZpbGw9IiMyNjI2MjYiIHN0cm9rZT0iIzNkNGU2NiIgc3Ryb2tlLXdpZHRoPSIxLjUiLz4KPHRleHQgeD0iMTEyIiB5PSIxMDYiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiA2NTAgMTMuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjYzljZWQ4Ij5Zb3VyIGFwcDwvdGV4dD4KPHRleHQgeD0iMTEyIiB5PSIxMjQiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjYzljZmQ4Ij5PcGVuU2VhcmNoIGNsaWVudDwvdGV4dD4KPGxpbmUgeDE9IjE5NCIgeTE9IjExMSIgeDI9IjIyMiIgeTI9IjExMSIgc3Ryb2tlPSIjNDE0ZTYyIiBzdHJva2Utd2lkdGg9IjIiLz4KPHJlY3QgeD0iMjIyIiB5PSI4MCIgd2lkdGg9IjE2NCIgaGVpZ2h0PSI2MiIgcng9IjExIiBmaWxsPSIjMjYyNjI2IiBzdHJva2U9IiMzZDRmNjYiIHN0cm9rZS13aWR0aD0iMS41Ii8+Cjx0ZXh0IHg9IjMwNCIgeT0iMTA1IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogNjUwIDEzLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogI2M5Y2VkODsgZm9udC1zaXplOjEycHgiPkFtYXpvbiBPcGVuU2VhcmNoPC90ZXh0Pgo8dGV4dCB4PSIzMDQiIHk9IjEyMyIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDExcHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICNjOWNmZDgiPkFXUy1tYW5hZ2VkIGRvbWFpbjwvdGV4dD4KPHJlY3QgeD0iNDMwIiB5PSI0MCIgd2lkdGg9IjM5MCIgaGVpZ2h0PSIxMjQiIHJ4PSIxNCIgZmlsbD0iIzFhMjYzMSIgc3Ryb2tlPSIjM2Q0ZjY2IiBzdHJva2Utd2lkdGg9IjEuNCIgc3Ryb2tlLWRhc2hhcnJheT0iNSA1Ii8+Cjx0ZXh0IHg9IjQ0NiIgeT0iNjIiIHN0eWxlPSJmb250OiA3MDAgMTBweCBJbnRlciwgc2Fucy1zZXJpZjsgbGV0dGVyLXNwYWNpbmc6IDEuM3B4OyBmaWxsOiAjOTRhM2I4OyBmaWxsOiAjOTBkZWM4Ij5PTiBESUdJVEFMT0NFQU48L3RleHQ+CjxyZWN0IHg9IjQ0NCIgeT0iODAiIHdpZHRoPSIxNjQiIGhlaWdodD0iNjIiIHJ4PSIxMSIgZmlsbD0iIzI2MjYyNiIgc3Ryb2tlPSIjM2Q0ZTY2IiBzdHJva2Utd2lkdGg9IjEuNSIvPgo8dGV4dCB4PSI1MjYiIHk9IjEwNiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDY1MCAxMy41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICNjOWNlZDgiPllvdXIgYXBwPC90ZXh0Pgo8dGV4dCB4PSI1MjYiIHk9IjEyNCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDYwMCAxMXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjOTBkZWM2Ij5zYW1lIGNsaWVudHM8L3RleHQ+CjxsaW5lIHgxPSI2MDgiIHkxPSIxMTEiIHgyPSI2MzYiIHkyPSIxMTEiIHN0cm9rZT0iIzA1OTY2OSIgc3Ryb2tlLXdpZHRoPSIyIi8+CjxyZWN0IHg9IjYzNiIgeT0iODAiIHdpZHRoPSIxNjQiIGhlaWdodD0iNjIiIHJ4PSIxMSIgZmlsbD0iIzFhMzEyNiIgc3Ryb2tlPSIjMDU5NjY5IiBzdHJva2Utd2lkdGg9IjEuNyIvPgo8dGV4dCB4PSI3MTgiIHk9IjEwNSIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDcwMCAxMy41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICM5MGRlYzg7IGZvbnQtc2l6ZToxMS41cHgiPkRPIE1hbmFnZWQgT3BlblNlYXJjaDwvdGV4dD4KPHRleHQgeD0iNzE4IiB5PSIxMjMiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMC41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICM5MGRlYzgiPk9wZW5TZWFyY2ggMi4xOTwvdGV4dD4KPC9zdmc+" alt="Before: on AWS your app's OpenSearch client speaks the OpenSearch REST API to an AWS-managed Amazon OpenSearch domain. After: on DigitalOcean the same app and the same clients speak the same OpenSearch wire straight to a DigitalOcean Managed OpenSearch 2.19 cluster, with no proxy in the data path." />
</div>

<p className="t9-caption">Your OpenSearch domain is compiled to a DigitalOcean Managed OpenSearch cluster; the endpoint is rewired to it and your existing clients connect straight through, with no proxy in the data path.</p>

#### The same engine

DigitalOcean Managed OpenSearch runs the **OpenSearch engine at version 2.19** (Apache-2.0, derived from Elasticsearch 7.10.2), the same engine your AWS domain runs. So the core REST API is byte-identical: index and document operations (`_doc`, `_bulk`), search and aggregations (`_search`), mappings, ingest, and Painless scripting behave as they do today.

The plugin APIs live under OpenSearch's own `_plugins/*` namespace, and on DigitalOcean they are the **real bundled OpenSearch plugins**: k-NN and Neural search for vectors (`_plugins/_knn`), SQL and PPL (`_plugins/_sql`, `_plugins/_ppl`), Index State Management, Alerting, Anomaly Detection, and ML Commons. Because the distribution is the genuine one, these run as themselves rather than standing in for a different search product.

One vector detail affects sizing: k-NN and Neural search are present, but DigitalOcean does not offer a disk-resident approximate-nearest-neighbor index, so vector work is bounded by the node's RAM. That shapes how you size a cluster whose queries lean on large HNSW graphs.

<div className="t9-diagram-scroll" role="region" aria-label="Scrollable diagram" tabIndex={0}>
  <img className="t9-diagram-light" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4MzYiIGhlaWdodD0iMTYwIiB2aWV3Qm94PSIwIDAgODM2IDE2MCIgcm9sZT0iaW1nIiBhcmlhLWxhYmVsPSJUaGUgc2FtZSBPcGVuU2VhcmNoIFJFU1QgQVBJIChjb3JlIGluZGV4LCBkb2N1bWVudCwgc2VhcmNoLCBhbmQgYWdncmVnYXRpb24gZW5kcG9pbnRzIHBsdXMgdGhlIF9wbHVnaW5zIEFQSXMgZm9yIGstTk4sIE5ldXJhbCBzZWFyY2gsIFNRTCwgUFBMLCBpbmRleCBzdGF0ZSBtYW5hZ2VtZW50LCBhbGVydGluZywgYW5vbWFseSBkZXRlY3Rpb24sIGFuZCBtYWNoaW5lIGxlYXJuaW5nKSBsYW5kcyBuYXRpdmVseSBvbiBEaWdpdGFsT2NlYW4ncyBPcGVuU2VhcmNoIDIuMTkgZW5naW5lLCB3aGljaCBpcyBBcGFjaGUtMi4wIGFuZCBkZXJpdmVkIGZyb20gRWxhc3RpY3NlYXJjaCA3LjEwLjIuIj48c3R5bGU+dGV4dHtmb250LWZhbWlseTpJbnRlciwtYXBwbGUtc3lzdGVtLEJsaW5rTWFjU3lzdGVtRm9udCwnU2Vnb2UgVUknLFJvYm90bywnSGVsdmV0aWNhIE5ldWUnLEFyaWFsLHNhbnMtc2VyaWY7ZmlsbDojMzM0MTU1fTwvc3R5bGU+CjxkZWZzPjxtYXJrZXIgaWQ9ImRvb3MyLWEiIHZpZXdCb3g9IjAgMCAxMCAxMCIgcmVmWD0iOCIgcmVmWT0iNSIgbWFya2VyV2lkdGg9IjYuNSIgbWFya2VySGVpZ2h0PSI2LjUiIG9yaWVudD0iYXV0by1zdGFydC1yZXZlcnNlIj48cGF0aCBkPSJNMCwwIEwxMCw1IEwwLDEwIHoiIGZpbGw9IiM5NGEzYjgiLz48L21hcmtlcj48L2RlZnM+Cjx0ZXh0IHg9IjI0IiB5PSIyNiIgc3R5bGU9ImZvbnQ6IDcwMCAxMHB4IEludGVyLCBzYW5zLXNlcmlmOyBsZXR0ZXItc3BhY2luZzogMS4zcHg7IGZpbGw6ICM5NGEzYjgiPlRIRSBPUEVOU0VBUkNIIFJFU1QgQVBJPC90ZXh0Pgo8dGV4dCB4PSI1NjYiIHk9IjI2IiBzdHlsZT0iZm9udDogNzAwIDEwcHggSW50ZXIsIHNhbnMtc2VyaWY7IGxldHRlci1zcGFjaW5nOiAxLjNweDsgZmlsbDogIzk0YTNiODsgZmlsbDojMDQ3ODU3Ij5ESUdJVEFMT0NFQU4gT1BFTlNFQVJDSCAyLjE5PC90ZXh0Pgo8cmVjdCB4PSIyNCIgeT0iMzgiIHdpZHRoPSI0ODYiIGhlaWdodD0iMTA4IiByeD0iMTMiIGZpbGw9IiNmOGZhZmMiIHN0cm9rZT0iI2UyZThmMCIgc3Ryb2tlLXdpZHRoPSIxLjUiLz4KPHRleHQgeD0iNDIiIHk9IjYzIiBzdHlsZT0iZm9udDogNjUwIDEzLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzBmMTcyYSI+U2FtZSByZXF1ZXN0cywgYnl0ZS1mb3ItYnl0ZTwvdGV4dD4KPHRleHQgeD0iNDIiIHk9Ijg3IiBzdHlsZT0iZm9udDogMTFweCAnU0YgTW9ubycsIHVpLW1vbm9zcGFjZSwgJ0pldEJyYWlucyBNb25vJywgTWVubG8sIG1vbm9zcGFjZTsgZmlsbDogIzQ3NTU2OSI+X2RvYyDCtyBfYnVsayDCtyBfc2VhcmNoIMK3IF9tYXBwaW5nIMK3IF9hZ2dzPC90ZXh0Pgo8dGV4dCB4PSI0MiIgeT0iMTA3IiBzdHlsZT0iZm9udDogMTFweCAnU0YgTW9ubycsIHVpLW1vbm9zcGFjZSwgJ0pldEJyYWlucyBNb25vJywgTWVubG8sIG1vbm9zcGFjZTsgZmlsbDogIzQ3NTU2OSI+X3BsdWdpbnMvX2tubiDCtyBfcGx1Z2lucy9fc3FsIMK3IF9wbHVnaW5zL19wcGw8L3RleHQ+Cjx0ZXh0IHg9IjQyIiB5PSIxMjciIHN0eWxlPSJmb250OiAxMXB4ICdTRiBNb25vJywgdWktbW9ub3NwYWNlLCAnSmV0QnJhaW5zIE1vbm8nLCBNZW5sbywgbW9ub3NwYWNlOyBmaWxsOiAjNDc1NTY5Ij5fcGx1Z2lucy9faXNtIMK3IF9wbHVnaW5zL19hbGVydGluZyDCtyBfcGx1Z2lucy9fbWw8L3RleHQ+CjxsaW5lIHgxPSI1MTAiIHkxPSI5MiIgeDI9IjU2MiIgeTI9IjkyIiBzdHJva2U9IiM5NGEzYjgiIHN0cm9rZS13aWR0aD0iMiIgbWFya2VyLWVuZD0idXJsKCNkb29zMi1hKSIvPgo8cmVjdCB4PSI1NjYiIHk9IjM4IiB3aWR0aD0iMjQ2IiBoZWlnaHQ9IjEwOCIgcng9IjEzIiBmaWxsPSIjZWNmZGY1IiBzdHJva2U9IiMwNTk2NjkiIHN0cm9rZS13aWR0aD0iMS43Ii8+Cjx0ZXh0IHg9IjY4OSIgeT0iNzYiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiA3MDAgMTMuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjMDQ3ODU3OyBmb250LXNpemU6MTIuNXB4Ij5PcGVuU2VhcmNoIDIuMTkgZW5naW5lPC90ZXh0Pgo8dGV4dCB4PSI2ODkiIHk9Ijk4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTAuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjMDQ3ODU3Ij5BcGFjaGUtMi4wIMK3IGstTk4gKyBOZXVyYWwgYnVuZGxlZDwvdGV4dD4KPHRleHQgeD0iNjg5IiB5PSIxMjAiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjNjQ3NDhiIj5uYXRpdmUgX3BsdWdpbnMvKjwvdGV4dD4KPC9zdmc+" alt="The same OpenSearch REST API (core index, document, search, and aggregation endpoints plus the _plugins APIs for k-NN, Neural search, SQL, PPL, index state management, alerting, anomaly detection, and machine learning) lands natively on DigitalOcean's OpenSearch 2.19 engine, which is Apache-2.0 and derived from Elasticsearch 7.10.2." />

  <img className="t9-diagram-dark" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4MzYiIGhlaWdodD0iMTYwIiB2aWV3Qm94PSIwIDAgODM2IDE2MCIgcm9sZT0iaW1nIiBhcmlhLWxhYmVsPSJUaGUgc2FtZSBPcGVuU2VhcmNoIFJFU1QgQVBJIChjb3JlIGluZGV4LCBkb2N1bWVudCwgc2VhcmNoLCBhbmQgYWdncmVnYXRpb24gZW5kcG9pbnRzIHBsdXMgdGhlIF9wbHVnaW5zIEFQSXMgZm9yIGstTk4sIE5ldXJhbCBzZWFyY2gsIFNRTCwgUFBMLCBpbmRleCBzdGF0ZSBtYW5hZ2VtZW50LCBhbGVydGluZywgYW5vbWFseSBkZXRlY3Rpb24sIGFuZCBtYWNoaW5lIGxlYXJuaW5nKSBsYW5kcyBuYXRpdmVseSBvbiBEaWdpdGFsT2NlYW4ncyBPcGVuU2VhcmNoIDIuMTkgZW5naW5lLCB3aGljaCBpcyBBcGFjaGUtMi4wIGFuZCBkZXJpdmVkIGZyb20gRWxhc3RpY3NlYXJjaCA3LjEwLjIuIj48c3R5bGU+dGV4dHtmb250LWZhbWlseTpJbnRlciwtYXBwbGUtc3lzdGVtLEJsaW5rTWFjU3lzdGVtRm9udCwnU2Vnb2UgVUknLFJvYm90bywnSGVsdmV0aWNhIE5ldWUnLEFyaWFsLHNhbnMtc2VyaWY7ZmlsbDojY2JkNWUxfTwvc3R5bGU+CjxkZWZzPjxtYXJrZXIgaWQ9ImRvb3MyLWEiIHZpZXdCb3g9IjAgMCAxMCAxMCIgcmVmWD0iOCIgcmVmWT0iNSIgbWFya2VyV2lkdGg9IjYuNSIgbWFya2VySGVpZ2h0PSI2LjUiIG9yaWVudD0iYXV0by1zdGFydC1yZXZlcnNlIj48cGF0aCBkPSJNMCwwIEwxMCw1IEwwLDEwIHoiIGZpbGw9IiM5NGEzYjgiLz48L21hcmtlcj48L2RlZnM+Cjx0ZXh0IHg9IjI0IiB5PSIyNiIgc3R5bGU9ImZvbnQ6IDcwMCAxMHB4IEludGVyLCBzYW5zLXNlcmlmOyBsZXR0ZXItc3BhY2luZzogMS4zcHg7IGZpbGw6ICM5NGEzYjgiPlRIRSBPUEVOU0VBUkNIIFJFU1QgQVBJPC90ZXh0Pgo8dGV4dCB4PSI1NjYiIHk9IjI2IiBzdHlsZT0iZm9udDogNzAwIDEwcHggSW50ZXIsIHNhbnMtc2VyaWY7IGxldHRlci1zcGFjaW5nOiAxLjNweDsgZmlsbDogIzk0YTNiODsgZmlsbDogIzkwZGVjOCI+RElHSVRBTE9DRUFOIE9QRU5TRUFSQ0ggMi4xOTwvdGV4dD4KPHJlY3QgeD0iMjQiIHk9IjM4IiB3aWR0aD0iNDg2IiBoZWlnaHQ9IjEwOCIgcng9IjEzIiBmaWxsPSIjMWEyNjMxIiBzdHJva2U9IiMzZDRlNjYiIHN0cm9rZS13aWR0aD0iMS41Ii8+Cjx0ZXh0IHg9IjQyIiB5PSI2MyIgc3R5bGU9ImZvbnQ6IDY1MCAxMy41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICNjOWNlZDgiPlNhbWUgcmVxdWVzdHMsIGJ5dGUtZm9yLWJ5dGU8L3RleHQ+Cjx0ZXh0IHg9IjQyIiB5PSI4NyIgc3R5bGU9ImZvbnQ6IDExcHggJ1NGIE1vbm8nLCB1aS1tb25vc3BhY2UsICdKZXRCcmFpbnMgTW9ubycsIE1lbmxvLCBtb25vc3BhY2U7IGZpbGw6ICNjOWNmZDgiPl9kb2MgwrcgX2J1bGsgwrcgX3NlYXJjaCDCtyBfbWFwcGluZyDCtyBfYWdnczwvdGV4dD4KPHRleHQgeD0iNDIiIHk9IjEwNyIgc3R5bGU9ImZvbnQ6IDExcHggJ1NGIE1vbm8nLCB1aS1tb25vc3BhY2UsICdKZXRCcmFpbnMgTW9ubycsIE1lbmxvLCBtb25vc3BhY2U7IGZpbGw6ICNjOWNmZDgiPl9wbHVnaW5zL19rbm4gwrcgX3BsdWdpbnMvX3NxbCDCtyBfcGx1Z2lucy9fcHBsPC90ZXh0Pgo8dGV4dCB4PSI0MiIgeT0iMTI3IiBzdHlsZT0iZm9udDogMTFweCAnU0YgTW9ubycsIHVpLW1vbm9zcGFjZSwgJ0pldEJyYWlucyBNb25vJywgTWVubG8sIG1vbm9zcGFjZTsgZmlsbDogI2M5Y2ZkOCI+X3BsdWdpbnMvX2lzbSDCtyBfcGx1Z2lucy9fYWxlcnRpbmcgwrcgX3BsdWdpbnMvX21sPC90ZXh0Pgo8bGluZSB4MT0iNTEwIiB5MT0iOTIiIHgyPSI1NjIiIHkyPSI5MiIgc3Ryb2tlPSIjNDE0ZTYyIiBzdHJva2Utd2lkdGg9IjIiIG1hcmtlci1lbmQ9InVybCgjZG9vczItYSkiLz4KPHJlY3QgeD0iNTY2IiB5PSIzOCIgd2lkdGg9IjI0NiIgaGVpZ2h0PSIxMDgiIHJ4PSIxMyIgZmlsbD0iIzFhMzEyNiIgc3Ryb2tlPSIjMDU5NjY5IiBzdHJva2Utd2lkdGg9IjEuNyIvPgo8dGV4dCB4PSI2ODkiIHk9Ijc2IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogNzAwIDEzLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzkwZGVjODsgZm9udC1zaXplOjEyLjVweCI+T3BlblNlYXJjaCAyLjE5IGVuZ2luZTwvdGV4dD4KPHRleHQgeD0iNjg5IiB5PSI5OCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDEwLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzkwZGVjOCI+QXBhY2hlLTIuMCDCtyBrLU5OICsgTmV1cmFsIGJ1bmRsZWQ8L3RleHQ+Cjx0ZXh0IHg9IjY4OSIgeT0iMTIwIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTFweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogI2M5Y2ZkOCI+bmF0aXZlIF9wbHVnaW5zLyo8L3RleHQ+Cjwvc3ZnPg==" alt="The same OpenSearch REST API (core index, document, search, and aggregation endpoints plus the _plugins APIs for k-NN, Neural search, SQL, PPL, index state management, alerting, anomaly detection, and machine learning) lands natively on DigitalOcean's OpenSearch 2.19 engine, which is Apache-2.0 and derived from Elasticsearch 7.10.2." />
</div>

<p className="t9-caption">The core index, search, and aggregation API is byte-identical, and the \_plugins/\* features are the OpenSearch plugins bundled in DigitalOcean's 2.19 distribution.</p>

#### What changes: operational ownership

On AWS the domain is AWS's to operate; on DigitalOcean the cluster is DigitalOcean's to operate . DigitalOcean provisions the nodes and runs the managed lifecycle: automated backups (hourly for the first 24 hours, then daily for up to 3 more days), failover to a standby node, and in-place version upgrades. Node health and patching are DigitalOcean's job, shaped by its control panel and API rather than by AWS's.

Choose the plan class (Basic, General Purpose, or Memory-Optimized), the node count, and the managed storage size. There is no separate dedicated-master tier to configure the way an AWS domain has one; you add a standby node when you want failover. This is a shift in operational ownership: with no proxy in the data path, the cluster's performance is its own, reported by your own monitoring.

<div className="t9-diagram-scroll" role="region" aria-label="Scrollable diagram" tabIndex={0}>
  <img className="t9-diagram-light" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4MzYiIGhlaWdodD0iMTk2IiB2aWV3Qm94PSIwIDAgODM2IDE5NiIgcm9sZT0iaW1nIiBhcmlhLWxhYmVsPSJPbiBEaWdpdGFsT2NlYW4gdGhlIG9wZXJhdGlvbmFsIG1vZGVsIGlzIGZ1bGx5IG1hbmFnZWQuIERpZ2l0YWxPY2VhbiBydW5zIHRoZSBjbHVzdGVyOiBhdXRvbWF0ZWQgYmFja3VwcyAoaG91cmx5IGZvciB0aGUgZmlyc3QgMjQgaG91cnMsIHRoZW4gZGFpbHkgZm9yIHVwIHRvIDMgbW9yZSBkYXlzKSwgc3RhbmRieS1ub2RlIGZhaWxvdmVyLCBhbmQgaW4tcGxhY2UgdmVyc2lvbiB1cGdyYWRlcy4gWW91IGNob29zZSB0aGUgY29uZmlndXJhdGlvbjogdGhlIHBsYW4gY2xhc3MgKEJhc2ljLCBHZW5lcmFsIFB1cnBvc2UsIG9yIE1lbW9yeS1PcHRpbWl6ZWQpLCB0aGUgbm9kZSBjb3VudCBmcm9tIDEgdG8gMTUsIGFuZCB0aGUgbWFuYWdlZCBzdG9yYWdlIHNpemUuIFdoYXQgQVdTIHdpcmVkIGludG8gdGhlIGRvbWFpbiBiZWNvbWVzIERpZ2l0YWxPY2VhbidzIG93biBtYW5hZ2VkIG1vZGVsLiI+PHN0eWxlPnRleHR7Zm9udC1mYW1pbHk6SW50ZXIsLWFwcGxlLXN5c3RlbSxCbGlua01hY1N5c3RlbUZvbnQsJ1NlZ29lIFVJJyxSb2JvdG8sJ0hlbHZldGljYSBOZXVlJyxBcmlhbCxzYW5zLXNlcmlmO2ZpbGw6IzMzNDE1NX08L3N0eWxlPgo8ZGVmcz48bWFya2VyIGlkPSJkb29zMy1hIiB2aWV3Qm94PSIwIDAgMTAgMTAiIHJlZlg9IjgiIHJlZlk9IjUiIG1hcmtlcldpZHRoPSI2LjUiIG1hcmtlckhlaWdodD0iNi41IiBvcmllbnQ9ImF1dG8tc3RhcnQtcmV2ZXJzZSI+PHBhdGggZD0iTTAsMCBMMTAsNSBMMCwxMCB6IiBmaWxsPSIjOTRhM2I4Ii8+PC9tYXJrZXI+PC9kZWZzPgo8dGV4dCB4PSI0NCIgeT0iMjYiIHN0eWxlPSJmb250OiA3MDAgMTBweCBJbnRlciwgc2Fucy1zZXJpZjsgbGV0dGVyLXNwYWNpbmc6IDEuM3B4OyBmaWxsOiAjOTRhM2I4Ij5XSE8gRE9FUyBXSEFUPC90ZXh0Pgo8dGV4dCB4PSIzNjAiIHk9IjI2IiBzdHlsZT0iZm9udDogNzAwIDEwcHggSW50ZXIsIHNhbnMtc2VyaWY7IGxldHRlci1zcGFjaW5nOiAxLjNweDsgZmlsbDogIzk0YTNiODsgZmlsbDojMDQ3ODU3Ij5GVUxMWSBNQU5BR0VEIEJZIERJR0lUQUxPQ0VBTjwvdGV4dD4KPHJlY3QgeD0iNDQiIHk9IjM4IiB3aWR0aD0iMjI4IiBoZWlnaHQ9IjU4IiByeD0iMTAiIGZpbGw9IiNlY2ZkZjUiIHN0cm9rZT0iIzA1OTY2OSIgc3Ryb2tlLXdpZHRoPSIxLjYiLz4KPHRleHQgeD0iNjAiIHk9IjYyIiBzdHlsZT0iZm9udDogNzAwIDEzLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzA0Nzg1NzsgZm9udC1zaXplOjEyLjVweCI+RGlnaXRhbE9jZWFuIHJ1bnMgaXQ8L3RleHQ+Cjx0ZXh0IHg9IjYwIiB5PSI4MCIgc3R5bGU9ImZvbnQ6IDEwLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzA0Nzg1NyI+YmFja3VwcyDCtyBmYWlsb3ZlciDCtyB1cGdyYWRlczwvdGV4dD4KPGxpbmUgeDE9IjI3NiIgeTE9IjY3IiB4Mj0iMzI0IiB5Mj0iNjciIHN0cm9rZT0iIzk0YTNiOCIgc3Ryb2tlLXdpZHRoPSIyIiBtYXJrZXItZW5kPSJ1cmwoI2Rvb3MzLWEpIi8+CjxyZWN0IHg9IjMyOCIgeT0iMzgiIHdpZHRoPSI0NjgiIGhlaWdodD0iNTgiIHJ4PSIxMCIgZmlsbD0iI2Y4ZmFmYyIgc3Ryb2tlPSIjY2JkNWUxIiBzdHJva2Utd2lkdGg9IjEuNCIvPgo8dGV4dCB4PSIzNDQiIHk9IjYyIiBzdHlsZT0iZm9udDogNjUwIDEzLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzBmMTcyYTsgZm9udC1zaXplOjEyLjVweCI+QXV0b21hdGVkLCBvbiBEaWdpdGFsT2NlYW4ncyBzY2hlZHVsZTwvdGV4dD4KPHRleHQgeD0iMzQ0IiB5PSI4MiIgc3R5bGU9ImZvbnQ6IDExcHggJ1NGIE1vbm8nLCB1aS1tb25vc3BhY2UsICdKZXRCcmFpbnMgTW9ubycsIE1lbmxvLCBtb25vc3BhY2U7IGZpbGw6ICM0NzU1NjkiPmhvdXJseSAyNGggKyBkYWlseSAzZCDCtyBzdGFuZGJ5IEhBIMK3IGluLXBsYWNlIHVwZ3JhZGVzPC90ZXh0Pgo8cmVjdCB4PSI0NCIgeT0iMTA0IiB3aWR0aD0iMjI4IiBoZWlnaHQ9IjU4IiByeD0iMTAiIGZpbGw9IiNmOGZhZmMiIHN0cm9rZT0iI2NiZDVlMSIgc3Ryb2tlLXdpZHRoPSIxLjQiLz4KPHRleHQgeD0iNjAiIHk9IjEyOCIgc3R5bGU9ImZvbnQ6IDY1MCAxMy41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICMwZjE3MmE7IGZvbnQtc2l6ZToxMi41cHgiPllvdSBjaG9vc2UgdGhlIHNoYXBlPC90ZXh0Pgo8dGV4dCB4PSI2MCIgeT0iMTQ2IiBzdHlsZT0iZm9udDogMTAuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjMDQ3ODU3OyBmaWxsOiM0NzU1NjkiPnBsYW4gwrcgbm9kZXMgwrcgc3RvcmFnZTwvdGV4dD4KPGxpbmUgeDE9IjI3NiIgeTE9IjEzMyIgeDI9IjMyNCIgeTI9IjEzMyIgc3Ryb2tlPSIjOTRhM2I4IiBzdHJva2Utd2lkdGg9IjIiIG1hcmtlci1lbmQ9InVybCgjZG9vczMtYSkiLz4KPHJlY3QgeD0iMzI4IiB5PSIxMDQiIHdpZHRoPSI0NjgiIGhlaWdodD0iNTgiIHJ4PSIxMCIgZmlsbD0iI2Y4ZmFmYyIgc3Ryb2tlPSIjY2JkNWUxIiBzdHJva2Utd2lkdGg9IjEuNCIvPgo8dGV4dCB4PSIzNDQiIHk9IjEyOCIgc3R5bGU9ImZvbnQ6IDY1MCAxMy41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICMwZjE3MmE7IGZvbnQtc2l6ZToxMi41cHgiPlNpemVkIGluIERpZ2l0YWxPY2VhbiBwbGFuczwvdGV4dD4KPHRleHQgeD0iMzQ0IiB5PSIxNDgiIHN0eWxlPSJmb250OiAxMXB4ICdTRiBNb25vJywgdWktbW9ub3NwYWNlLCAnSmV0QnJhaW5zIE1vbm8nLCBNZW5sbywgbW9ub3NwYWNlOyBmaWxsOiAjNDc1NTY5Ij5CYXNpYyAvIEdQIC8gTWVtb3J5IMK3IDEgdG8gMTUgbm9kZXMgwrcgbWFuYWdlZCBzdG9yYWdlPC90ZXh0Pgo8dGV4dCB4PSI0NCIgeT0iMTg0IiBzdHlsZT0iZm9udDogNjAwIDExcHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICNiNDUzMDkiPuKWsyBBV1MncyBtYW5hZ2VkLWRvbWFpbiBjb252ZW5pZW5jZXMgYmVjb21lIERpZ2l0YWxPY2VhbidzIG93biBtYW5hZ2VkIG1vZGVsPC90ZXh0Pgo8L3N2Zz4=" alt="On DigitalOcean the operational model is fully managed. DigitalOcean runs the cluster: automated backups (hourly for the first 24 hours, then daily for up to 3 more days), standby-node failover, and in-place version upgrades. You choose the configuration: the plan class (Basic, General Purpose, or Memory-Optimized), the node count from 1 to 15, and the managed storage size. What AWS wired into the domain becomes DigitalOcean's own managed model." />

  <img className="t9-diagram-dark" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4MzYiIGhlaWdodD0iMTk2IiB2aWV3Qm94PSIwIDAgODM2IDE5NiIgcm9sZT0iaW1nIiBhcmlhLWxhYmVsPSJPbiBEaWdpdGFsT2NlYW4gdGhlIG9wZXJhdGlvbmFsIG1vZGVsIGlzIGZ1bGx5IG1hbmFnZWQuIERpZ2l0YWxPY2VhbiBydW5zIHRoZSBjbHVzdGVyOiBhdXRvbWF0ZWQgYmFja3VwcyAoaG91cmx5IGZvciB0aGUgZmlyc3QgMjQgaG91cnMsIHRoZW4gZGFpbHkgZm9yIHVwIHRvIDMgbW9yZSBkYXlzKSwgc3RhbmRieS1ub2RlIGZhaWxvdmVyLCBhbmQgaW4tcGxhY2UgdmVyc2lvbiB1cGdyYWRlcy4gWW91IGNob29zZSB0aGUgY29uZmlndXJhdGlvbjogdGhlIHBsYW4gY2xhc3MgKEJhc2ljLCBHZW5lcmFsIFB1cnBvc2UsIG9yIE1lbW9yeS1PcHRpbWl6ZWQpLCB0aGUgbm9kZSBjb3VudCBmcm9tIDEgdG8gMTUsIGFuZCB0aGUgbWFuYWdlZCBzdG9yYWdlIHNpemUuIFdoYXQgQVdTIHdpcmVkIGludG8gdGhlIGRvbWFpbiBiZWNvbWVzIERpZ2l0YWxPY2VhbidzIG93biBtYW5hZ2VkIG1vZGVsLiI+PHN0eWxlPnRleHR7Zm9udC1mYW1pbHk6SW50ZXIsLWFwcGxlLXN5c3RlbSxCbGlua01hY1N5c3RlbUZvbnQsJ1NlZ29lIFVJJyxSb2JvdG8sJ0hlbHZldGljYSBOZXVlJyxBcmlhbCxzYW5zLXNlcmlmO2ZpbGw6I2NiZDVlMX08L3N0eWxlPgo8ZGVmcz48bWFya2VyIGlkPSJkb29zMy1hIiB2aWV3Qm94PSIwIDAgMTAgMTAiIHJlZlg9IjgiIHJlZlk9IjUiIG1hcmtlcldpZHRoPSI2LjUiIG1hcmtlckhlaWdodD0iNi41IiBvcmllbnQ9ImF1dG8tc3RhcnQtcmV2ZXJzZSI+PHBhdGggZD0iTTAsMCBMMTAsNSBMMCwxMCB6IiBmaWxsPSIjOTRhM2I4Ii8+PC9tYXJrZXI+PC9kZWZzPgo8dGV4dCB4PSI0NCIgeT0iMjYiIHN0eWxlPSJmb250OiA3MDAgMTBweCBJbnRlciwgc2Fucy1zZXJpZjsgbGV0dGVyLXNwYWNpbmc6IDEuM3B4OyBmaWxsOiAjOTRhM2I4Ij5XSE8gRE9FUyBXSEFUPC90ZXh0Pgo8dGV4dCB4PSIzNjAiIHk9IjI2IiBzdHlsZT0iZm9udDogNzAwIDEwcHggSW50ZXIsIHNhbnMtc2VyaWY7IGxldHRlci1zcGFjaW5nOiAxLjNweDsgZmlsbDogIzk0YTNiODsgZmlsbDogIzkwZGVjOCI+RlVMTFkgTUFOQUdFRCBCWSBESUdJVEFMT0NFQU48L3RleHQ+CjxyZWN0IHg9IjQ0IiB5PSIzOCIgd2lkdGg9IjIyOCIgaGVpZ2h0PSI1OCIgcng9IjEwIiBmaWxsPSIjMWEzMTI2IiBzdHJva2U9IiMwNTk2NjkiIHN0cm9rZS13aWR0aD0iMS42Ii8+Cjx0ZXh0IHg9IjYwIiB5PSI2MiIgc3R5bGU9ImZvbnQ6IDcwMCAxMy41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICM5MGRlYzg7IGZvbnQtc2l6ZToxMi41cHgiPkRpZ2l0YWxPY2VhbiBydW5zIGl0PC90ZXh0Pgo8dGV4dCB4PSI2MCIgeT0iODAiIHN0eWxlPSJmb250OiAxMC41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICM5MGRlYzgiPmJhY2t1cHMgwrcgZmFpbG92ZXIgwrcgdXBncmFkZXM8L3RleHQ+CjxsaW5lIHgxPSIyNzYiIHkxPSI2NyIgeDI9IjMyNCIgeTI9IjY3IiBzdHJva2U9IiM0MTRlNjIiIHN0cm9rZS13aWR0aD0iMiIgbWFya2VyLWVuZD0idXJsKCNkb29zMy1hKSIvPgo8cmVjdCB4PSIzMjgiIHk9IjM4IiB3aWR0aD0iNDY4IiBoZWlnaHQ9IjU4IiByeD0iMTAiIGZpbGw9IiMxYTI2MzEiIHN0cm9rZT0iIzNkNGY2NiIgc3Ryb2tlLXdpZHRoPSIxLjQiLz4KPHRleHQgeD0iMzQ0IiB5PSI2MiIgc3R5bGU9ImZvbnQ6IDY1MCAxMy41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICNjOWNlZDg7IGZvbnQtc2l6ZToxMi41cHgiPkF1dG9tYXRlZCwgb24gRGlnaXRhbE9jZWFuJ3Mgc2NoZWR1bGU8L3RleHQ+Cjx0ZXh0IHg9IjM0NCIgeT0iODIiIHN0eWxlPSJmb250OiAxMXB4ICdTRiBNb25vJywgdWktbW9ub3NwYWNlLCAnSmV0QnJhaW5zIE1vbm8nLCBNZW5sbywgbW9ub3NwYWNlOyBmaWxsOiAjYzljZmQ4Ij5ob3VybHkgMjRoICsgZGFpbHkgM2Qgwrcgc3RhbmRieSBIQSDCtyBpbi1wbGFjZSB1cGdyYWRlczwvdGV4dD4KPHJlY3QgeD0iNDQiIHk9IjEwNCIgd2lkdGg9IjIyOCIgaGVpZ2h0PSI1OCIgcng9IjEwIiBmaWxsPSIjMWEyNjMxIiBzdHJva2U9IiMzZDRmNjYiIHN0cm9rZS13aWR0aD0iMS40Ii8+Cjx0ZXh0IHg9IjYwIiB5PSIxMjgiIHN0eWxlPSJmb250OiA2NTAgMTMuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjYzljZWQ4OyBmb250LXNpemU6MTIuNXB4Ij5Zb3UgY2hvb3NlIHRoZSBzaGFwZTwvdGV4dD4KPHRleHQgeD0iNjAiIHk9IjE0NiIgc3R5bGU9ImZvbnQ6IDEwLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzkwZGVjODsgZmlsbDogI2M5Y2ZkOCI+cGxhbiDCtyBub2RlcyDCtyBzdG9yYWdlPC90ZXh0Pgo8bGluZSB4MT0iMjc2IiB5MT0iMTMzIiB4Mj0iMzI0IiB5Mj0iMTMzIiBzdHJva2U9IiM0MTRlNjIiIHN0cm9rZS13aWR0aD0iMiIgbWFya2VyLWVuZD0idXJsKCNkb29zMy1hKSIvPgo8cmVjdCB4PSIzMjgiIHk9IjEwNCIgd2lkdGg9IjQ2OCIgaGVpZ2h0PSI1OCIgcng9IjEwIiBmaWxsPSIjMWEyNjMxIiBzdHJva2U9IiMzZDRmNjYiIHN0cm9rZS13aWR0aD0iMS40Ii8+Cjx0ZXh0IHg9IjM0NCIgeT0iMTI4IiBzdHlsZT0iZm9udDogNjUwIDEzLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogI2M5Y2VkODsgZm9udC1zaXplOjEyLjVweCI+U2l6ZWQgaW4gRGlnaXRhbE9jZWFuIHBsYW5zPC90ZXh0Pgo8dGV4dCB4PSIzNDQiIHk9IjE0OCIgc3R5bGU9ImZvbnQ6IDExcHggJ1NGIE1vbm8nLCB1aS1tb25vc3BhY2UsICdKZXRCcmFpbnMgTW9ubycsIE1lbmxvLCBtb25vc3BhY2U7IGZpbGw6ICNjOWNmZDgiPkJhc2ljIC8gR1AgLyBNZW1vcnkgwrcgMSB0byAxNSBub2RlcyDCtyBtYW5hZ2VkIHN0b3JhZ2U8L3RleHQ+Cjx0ZXh0IHg9IjQ0IiB5PSIxODQiIHN0eWxlPSJmb250OiA2MDAgMTFweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogI2RlYjI5MCI+4pazIEFXUydzIG1hbmFnZWQtZG9tYWluIGNvbnZlbmllbmNlcyBiZWNvbWUgRGlnaXRhbE9jZWFuJ3Mgb3duIG1hbmFnZWQgbW9kZWw8L3RleHQ+Cjwvc3ZnPg==" alt="On DigitalOcean the operational model is fully managed. DigitalOcean runs the cluster: automated backups (hourly for the first 24 hours, then daily for up to 3 more days), standby-node failover, and in-place version upgrades. You choose the configuration: the plan class (Basic, General Purpose, or Memory-Optimized), the node count from 1 to 15, and the managed storage size. What AWS wired into the domain becomes DigitalOcean's own managed model." />
</div>

<p className="t9-caption">What changes is operational ownership: DigitalOcean runs the managed lifecycle (backups, failover, upgrades), and you choose the plan, node count, and storage size.</p>

#### Network and access on DigitalOcean

Reaching the cluster and authorizing to it work differently from AWS. The cluster can sit in a **DigitalOcean VPC** and be reached over a private network; who may connect is governed by a **trusted-sources allow-list** of IP addresses and DigitalOcean resources (up to 2,000 entries per cluster), in place of AWS security groups and VPC endpoint policies. DigitalOcean Cloud Firewalls do not apply to the managed cluster, and with trusted sources enabled some DigitalOcean log-forwarding paths are unavailable.

Inside the cluster, DigitalOcean exposes a **single `doadmin` superuser**. The OpenSearch Security plugin is present, but DigitalOcean does not currently offer creating extra users or roles through its control panel or API. If your AWS setup leaned on fine-grained, per-index or per-user access control, that model is re-expressed around the one `doadmin` credential rather than inherited from AWS.

Connections are encrypted in transit with SSL, and data is encrypted at rest with LUKS, always on, with no customer-managed key option.

<div className="t9-diagram-scroll" role="region" aria-label="Scrollable diagram" tabIndex={0}>
  <img className="t9-diagram-light" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4MzYiIGhlaWdodD0iMTkwIiB2aWV3Qm94PSIwIDAgODM2IDE5MCIgcm9sZT0iaW1nIiBhcmlhLWxhYmVsPSJPbiBEaWdpdGFsT2NlYW4gdGhlIGNsdXN0ZXIgc2l0cyBpbiBhIERpZ2l0YWxPY2VhbiBWUEMgb24gYSBwcml2YXRlIG5ldHdvcmsuIEEgdHJ1c3RlZC1zb3VyY2VzIElQIGFsbG93LWxpc3QgKHVwIHRvIDIsMDAwIGVudHJpZXMpIGdhdGVzIHdobyBjYW4gY29ubmVjdCwgaW4gcGxhY2Ugb2YgQVdTIHNlY3VyaXR5IGdyb3VwcyBhbmQgVlBDIGVuZHBvaW50IHBvbGljaWVzLiBJbnNpZGUgdGhlIGNsdXN0ZXIgdGhlcmUgaXMgYSBzaW5nbGUgZG9hZG1pbiBzdXBlcnVzZXI7IERpZ2l0YWxPY2VhbiBkb2VzIG5vdCBleHBvc2UgY3JlYXRpbmcgZXh0cmEgdXNlcnMgb3Igcm9sZXMsIGFuZCBEaWdpdGFsT2NlYW4gQ2xvdWQgRmlyZXdhbGxzIGRvIG5vdCBhcHBseSB0byB0aGUgbWFuYWdlZCBjbHVzdGVyLiI+PHN0eWxlPnRleHR7Zm9udC1mYW1pbHk6SW50ZXIsLWFwcGxlLXN5c3RlbSxCbGlua01hY1N5c3RlbUZvbnQsJ1NlZ29lIFVJJyxSb2JvdG8sJ0hlbHZldGljYSBOZXVlJyxBcmlhbCxzYW5zLXNlcmlmO2ZpbGw6IzMzNDE1NX08L3N0eWxlPgo8ZGVmcz48bWFya2VyIGlkPSJkb29zNC1hIiB2aWV3Qm94PSIwIDAgMTAgMTAiIHJlZlg9IjgiIHJlZlk9IjUiIG1hcmtlcldpZHRoPSI2LjUiIG1hcmtlckhlaWdodD0iNi41IiBvcmllbnQ9ImF1dG8tc3RhcnQtcmV2ZXJzZSI+PHBhdGggZD0iTTAsMCBMMTAsNSBMMCwxMCB6IiBmaWxsPSIjOTRhM2I4Ii8+PC9tYXJrZXI+PC9kZWZzPgo8cmVjdCB4PSIxNiIgeT0iMzQiIHdpZHRoPSI4MDQiIGhlaWdodD0iMTEwIiByeD0iMTQiIGZpbGw9IiNmOGZhZmMiIHN0cm9rZT0iI2NiZDVlMSIgc3Ryb2tlLXdpZHRoPSIxLjQiIHN0cm9rZS1kYXNoYXJyYXk9IjUgNSIvPgo8dGV4dCB4PSIzMiIgeT0iNTQiIHN0eWxlPSJmb250OiA3MDAgMTBweCBJbnRlciwgc2Fucy1zZXJpZjsgbGV0dGVyLXNwYWNpbmc6IDEuM3B4OyBmaWxsOiAjOTRhM2I4OyBmaWxsOiMwNDc4NTciPkRJR0lUQUxPQ0VBTiBWUEMgwrcgUFJJVkFURSBORVRXT1JLPC90ZXh0Pgo8cmVjdCB4PSI0MCIgeT0iNjgiIHdpZHRoPSIxODAiIGhlaWdodD0iNjAiIHJ4PSIxMSIgZmlsbD0iI2ZmZiIgc3Ryb2tlPSIjZTJlOGYwIiBzdHJva2Utd2lkdGg9IjEuNSIvPgo8dGV4dCB4PSIxMzAiIHk9Ijk0IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogNjUwIDEzLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzBmMTcyYTsgZm9udC1zaXplOjEyLjVweCI+WW91ciBhcHA8L3RleHQ+Cjx0ZXh0IHg9IjEzMCIgeT0iMTEyIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogNjAwIDExcHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICMwNTk2NjkiPnNhbWUgY2xpZW50czwvdGV4dD4KPGxpbmUgeDE9IjIyMCIgeTE9Ijk4IiB4Mj0iMjcyIiB5Mj0iOTgiIHN0cm9rZT0iIzk0YTNiOCIgc3Ryb2tlLXdpZHRoPSIyIiBtYXJrZXItZW5kPSJ1cmwoI2Rvb3M0LWEpIi8+CjxyZWN0IHg9IjI3NiIgeT0iNjgiIHdpZHRoPSIyMDAiIGhlaWdodD0iNjAiIHJ4PSIxMSIgZmlsbD0iI2ZmZiIgc3Ryb2tlPSIjY2JkNWUxIiBzdHJva2Utd2lkdGg9IjEuNSIvPgo8dGV4dCB4PSIzNzYiIHk9Ijk0IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogNjUwIDEzLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzBmMTcyYTsgZm9udC1zaXplOjEycHgiPlRydXN0ZWQgc291cmNlczwvdGV4dD4KPHRleHQgeD0iMzc2IiB5PSIxMTIiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjNjQ3NDhiIj5JUCBhbGxvdy1saXN0LCB1cCB0byAyLDAwMDwvdGV4dD4KPGxpbmUgeDE9IjQ3NiIgeTE9Ijk4IiB4Mj0iNTI4IiB5Mj0iOTgiIHN0cm9rZT0iIzk0YTNiOCIgc3Ryb2tlLXdpZHRoPSIyIiBtYXJrZXItZW5kPSJ1cmwoI2Rvb3M0LWEpIi8+CjxyZWN0IHg9IjUzMiIgeT0iNjgiIHdpZHRoPSIyNjQiIGhlaWdodD0iNjAiIHJ4PSIxMSIgZmlsbD0iI2VjZmRmNSIgc3Ryb2tlPSIjMDU5NjY5IiBzdHJva2Utd2lkdGg9IjEuNyIvPgo8dGV4dCB4PSI2NjQiIHk9Ijk0IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogNzAwIDEzLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzA0Nzg1NzsgZm9udC1zaXplOjEyLjVweCI+RE8gTWFuYWdlZCBPcGVuU2VhcmNoPC90ZXh0Pgo8dGV4dCB4PSI2NjQiIHk9IjExMiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDEwLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzA0Nzg1NyI+c2luZ2xlIGRvYWRtaW4gc3VwZXJ1c2VyPC90ZXh0Pgo8dGV4dCB4PSIzMiIgeT0iMTcyIiBzdHlsZT0iZm9udDogNjAwIDExcHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICNiNDUzMDkiPuKWsyB0cnVzdGVkIHNvdXJjZXMgcmVwbGFjZSBBV1Mgc2VjdXJpdHkgZ3JvdXBzOyBEaWdpdGFsT2NlYW4gQ2xvdWQgRmlyZXdhbGxzIGRvIG5vdCBhcHBseSBoZXJlPC90ZXh0Pgo8L3N2Zz4=" alt="On DigitalOcean the cluster sits in a DigitalOcean VPC on a private network. A trusted-sources IP allow-list (up to 2,000 entries) gates who can connect, in place of AWS security groups and VPC endpoint policies. Inside the cluster there is a single doadmin superuser; DigitalOcean does not expose creating extra users or roles, and DigitalOcean Cloud Firewalls do not apply to the managed cluster." />

  <img className="t9-diagram-dark" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4MzYiIGhlaWdodD0iMTkwIiB2aWV3Qm94PSIwIDAgODM2IDE5MCIgcm9sZT0iaW1nIiBhcmlhLWxhYmVsPSJPbiBEaWdpdGFsT2NlYW4gdGhlIGNsdXN0ZXIgc2l0cyBpbiBhIERpZ2l0YWxPY2VhbiBWUEMgb24gYSBwcml2YXRlIG5ldHdvcmsuIEEgdHJ1c3RlZC1zb3VyY2VzIElQIGFsbG93LWxpc3QgKHVwIHRvIDIsMDAwIGVudHJpZXMpIGdhdGVzIHdobyBjYW4gY29ubmVjdCwgaW4gcGxhY2Ugb2YgQVdTIHNlY3VyaXR5IGdyb3VwcyBhbmQgVlBDIGVuZHBvaW50IHBvbGljaWVzLiBJbnNpZGUgdGhlIGNsdXN0ZXIgdGhlcmUgaXMgYSBzaW5nbGUgZG9hZG1pbiBzdXBlcnVzZXI7IERpZ2l0YWxPY2VhbiBkb2VzIG5vdCBleHBvc2UgY3JlYXRpbmcgZXh0cmEgdXNlcnMgb3Igcm9sZXMsIGFuZCBEaWdpdGFsT2NlYW4gQ2xvdWQgRmlyZXdhbGxzIGRvIG5vdCBhcHBseSB0byB0aGUgbWFuYWdlZCBjbHVzdGVyLiI+PHN0eWxlPnRleHR7Zm9udC1mYW1pbHk6SW50ZXIsLWFwcGxlLXN5c3RlbSxCbGlua01hY1N5c3RlbUZvbnQsJ1NlZ29lIFVJJyxSb2JvdG8sJ0hlbHZldGljYSBOZXVlJyxBcmlhbCxzYW5zLXNlcmlmO2ZpbGw6I2NiZDVlMX08L3N0eWxlPgo8ZGVmcz48bWFya2VyIGlkPSJkb29zNC1hIiB2aWV3Qm94PSIwIDAgMTAgMTAiIHJlZlg9IjgiIHJlZlk9IjUiIG1hcmtlcldpZHRoPSI2LjUiIG1hcmtlckhlaWdodD0iNi41IiBvcmllbnQ9ImF1dG8tc3RhcnQtcmV2ZXJzZSI+PHBhdGggZD0iTTAsMCBMMTAsNSBMMCwxMCB6IiBmaWxsPSIjOTRhM2I4Ii8+PC9tYXJrZXI+PC9kZWZzPgo8cmVjdCB4PSIxNiIgeT0iMzQiIHdpZHRoPSI4MDQiIGhlaWdodD0iMTEwIiByeD0iMTQiIGZpbGw9IiMxYTI2MzEiIHN0cm9rZT0iIzNkNGY2NiIgc3Ryb2tlLXdpZHRoPSIxLjQiIHN0cm9rZS1kYXNoYXJyYXk9IjUgNSIvPgo8dGV4dCB4PSIzMiIgeT0iNTQiIHN0eWxlPSJmb250OiA3MDAgMTBweCBJbnRlciwgc2Fucy1zZXJpZjsgbGV0dGVyLXNwYWNpbmc6IDEuM3B4OyBmaWxsOiAjOTRhM2I4OyBmaWxsOiAjOTBkZWM4Ij5ESUdJVEFMT0NFQU4gVlBDIMK3IFBSSVZBVEUgTkVUV09SSzwvdGV4dD4KPHJlY3QgeD0iNDAiIHk9IjY4IiB3aWR0aD0iMTgwIiBoZWlnaHQ9IjYwIiByeD0iMTEiIGZpbGw9IiMyNjI2MjYiIHN0cm9rZT0iIzNkNGU2NiIgc3Ryb2tlLXdpZHRoPSIxLjUiLz4KPHRleHQgeD0iMTMwIiB5PSI5NCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDY1MCAxMy41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICNjOWNlZDg7IGZvbnQtc2l6ZToxMi41cHgiPllvdXIgYXBwPC90ZXh0Pgo8dGV4dCB4PSIxMzAiIHk9IjExMiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDYwMCAxMXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjOTBkZWM2Ij5zYW1lIGNsaWVudHM8L3RleHQ+CjxsaW5lIHgxPSIyMjAiIHkxPSI5OCIgeDI9IjI3MiIgeTI9Ijk4IiBzdHJva2U9IiM0MTRlNjIiIHN0cm9rZS13aWR0aD0iMiIgbWFya2VyLWVuZD0idXJsKCNkb29zNC1hKSIvPgo8cmVjdCB4PSIyNzYiIHk9IjY4IiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjYwIiByeD0iMTEiIGZpbGw9IiMyNjI2MjYiIHN0cm9rZT0iIzNkNGY2NiIgc3Ryb2tlLXdpZHRoPSIxLjUiLz4KPHRleHQgeD0iMzc2IiB5PSI5NCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDY1MCAxMy41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICNjOWNlZDg7IGZvbnQtc2l6ZToxMnB4Ij5UcnVzdGVkIHNvdXJjZXM8L3RleHQ+Cjx0ZXh0IHg9IjM3NiIgeT0iMTEyIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTFweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogI2M5Y2ZkOCI+SVAgYWxsb3ctbGlzdCwgdXAgdG8gMiwwMDA8L3RleHQ+CjxsaW5lIHgxPSI0NzYiIHkxPSI5OCIgeDI9IjUyOCIgeTI9Ijk4IiBzdHJva2U9IiM0MTRlNjIiIHN0cm9rZS13aWR0aD0iMiIgbWFya2VyLWVuZD0idXJsKCNkb29zNC1hKSIvPgo8cmVjdCB4PSI1MzIiIHk9IjY4IiB3aWR0aD0iMjY0IiBoZWlnaHQ9IjYwIiByeD0iMTEiIGZpbGw9IiMxYTMxMjYiIHN0cm9rZT0iIzA1OTY2OSIgc3Ryb2tlLXdpZHRoPSIxLjciLz4KPHRleHQgeD0iNjY0IiB5PSI5NCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDcwMCAxMy41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICM5MGRlYzg7IGZvbnQtc2l6ZToxMi41cHgiPkRPIE1hbmFnZWQgT3BlblNlYXJjaDwvdGV4dD4KPHRleHQgeD0iNjY0IiB5PSIxMTIiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMC41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICM5MGRlYzgiPnNpbmdsZSBkb2FkbWluIHN1cGVydXNlcjwvdGV4dD4KPHRleHQgeD0iMzIiIHk9IjE3MiIgc3R5bGU9ImZvbnQ6IDYwMCAxMXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjZGViMjkwIj7ilrMgdHJ1c3RlZCBzb3VyY2VzIHJlcGxhY2UgQVdTIHNlY3VyaXR5IGdyb3VwczsgRGlnaXRhbE9jZWFuIENsb3VkIEZpcmV3YWxscyBkbyBub3QgYXBwbHkgaGVyZTwvdGV4dD4KPC9zdmc+" alt="On DigitalOcean the cluster sits in a DigitalOcean VPC on a private network. A trusted-sources IP allow-list (up to 2,000 entries) gates who can connect, in place of AWS security groups and VPC endpoint policies. Inside the cluster there is a single doadmin superuser; DigitalOcean does not expose creating extra users or roles, and DigitalOcean Cloud Firewalls do not apply to the managed cluster." />
</div>

<p className="t9-caption">Access is gated by a DigitalOcean trusted-sources allow-list inside a VPC, and the cluster exposes a single doadmin superuser rather than DigitalOcean-managed users and roles.</p>

#### Limitations

The OpenSearch API remains unchanged. DigitalOcean uses different access controls, backup schedules, and sizing options; review these differences before switching traffic.

△ Plan these before moving an AWS OpenSearch domain to DigitalOcean Managed OpenSearch

* **Users and roles: only the `doadmin` superuser.** AWS fine-grained access control (per-index and per-user roles) has no counterpart; DigitalOcean does not currently offer managing extra OpenSearch users or roles, so access control is re-expressed around the single `doadmin` credential.
* **Backups follow DigitalOcean's model, not AWS's:** automated backups are hourly for the first 24 hours, then daily for up to 3 more days, with point-in-time recovery limited to the last 7 days; a restore creates a new cluster rather than restoring in place. Confirm this window meets your retention needs.
* **Networking is trusted sources, not security groups:** access is an IP and resource allow-list (up to 2,000 entries) inside a DigitalOcean VPC; AWS security groups, VPC endpoint policies, and Cloud Firewalls do not apply, and some DigitalOcean log-forwarding paths are unavailable when trusted sources are on.
* **Vector search is memory-bound:** k-NN and Neural search are bundled, but DigitalOcean offers no disk-resident ANN index, so large HNSW graphs must fit in node RAM; size the plan for the vector working set.
* **DigitalOcean sizing and key limits:** clusters are sized by plan (Basic is 1 or 3 nodes; General Purpose and Memory-Optimized allow 1, 3, 6, 9, or 15) with managed storage and no BYOK; AWS instance types and EBS ceilings do not map verbatim.
* **The SLA covers Managed Databases generically.** DigitalOcean's Managed Databases SLA is 99.95% monthly uptime with a standby node and 99.5% without; it applies to Managed Databases as a class and does not name OpenSearch specifically.

#### Other considerations

Plan versions, capacity, and data migration before switching traffic.

## On DigitalOcean and Scaleway

### Lucenia (self-hosted)

| Operation                                                                            | Area               | Support   | Depth        | Notes                                                                       |
| ------------------------------------------------------------------------------------ | ------------------ | --------- | ------------ | --------------------------------------------------------------------------- |
| Cluster health / stats / \_cat APIs                                                  | Cluster            | Supported | Most usage   | -                                                                           |
| Tasks API (\_tasks)                                                                  | Cluster            | Supported | Full surface | drives async reindex / update-by-query                                      |
| Bulk (\_bulk)                                                                        | Documents          | Supported | Common       | batch index/update/delete                                                   |
| Delete document                                                                      | Documents          | Supported | Common       | -                                                                           |
| Get document (GET /\{index}/\_doc/\{id})                                             | Documents          | Supported | Common       | -                                                                           |
| Index document (PUT/POST /\{index}/\_doc)                                            | Documents          | Supported | Common       | -                                                                           |
| Multi-get (\_mget)                                                                   | Documents          | Supported | Most usage   | -                                                                           |
| Update document (\_update)                                                           | Documents          | Supported | Common       | -                                                                           |
| Snapshots / backups (\_snapshot)                                                     | Durability         | Partial   | Full surface | self-managed                                                                |
| Aliases (\_aliases)                                                                  | Index management   | Supported | Most usage   | -                                                                           |
| Analyze (\_analyze)                                                                  | Index management   | Supported | Full surface | tokenizer/analyzer testing                                                  |
| Create / Delete / Get index                                                          | Index management   | Supported | Common       | -                                                                           |
| Data streams (\_data\_stream)                                                        | Index management   | Supported | Full surface | -                                                                           |
| Open / Close index                                                                   | Index management   | Supported | Full surface | -                                                                           |
| Put / Get mapping                                                                    | Index management   | Supported | Common       | -                                                                           |
| Refresh / Flush / Forcemerge                                                         | Index management   | Supported | Most usage   | -                                                                           |
| Rollover / Shrink / Split / Clone                                                    | Index management   | Supported | Full surface | -                                                                           |
| Update / Get settings                                                                | Index management   | Supported | Most usage   | -                                                                           |
| Index & component templates (\_index\_template / \_component\_template)              | Ingest & templates | Supported | Full surface | -                                                                           |
| Ingest pipelines (\_ingest/pipeline: put / get / delete / \_simulate)                | Ingest & templates | Supported | Full surface | -                                                                           |
| License / X-Pack (\_license, \_xpack)                                                | Licensing          | Supported | Full surface | dual Apache-2.0 / SSPL; no license API                                      |
| Index State Management (\_plugins/\_ism)                                             | Lifecycle          | Partial   | Full surface | OpenSearch-compatible fork; per-plugin parity not independently verified    |
| Alerting / anomaly detection / ML Commons (\_plugins/\*)                             | Observability & ML | Partial   | Full surface | no published per-plugin compatibility matrix                                |
| Notifications / observability (\_plugins/\_notifications, \_plugins/\_observability) | Observability & ML | Partial   | Full surface | no published per-plugin compatibility matrix                                |
| PPL (\_plugins/\_ppl)                                                                | Query languages    | Partial   | Full surface | OpenSearch-compatible fork; per-plugin parity not independently verified    |
| SQL (\_plugins/\_sql)                                                                | Query languages    | Partial   | Full surface | OpenSearch-compatible fork; per-plugin parity not independently verified    |
| Stored scripts & Painless (\_scripts, \_scripts/painless/\_execute)                  | Scripting          | Supported | Full surface | -                                                                           |
| Aggregations                                                                         | Search             | Supported | Common       | metrics + bucket aggregations in \_search                                   |
| Count / Explain / Suggest                                                            | Search             | Supported | Most usage   | -                                                                           |
| Field capabilities (\_field\_caps)                                                   | Search             | Supported | Full surface | -                                                                           |
| Multi-search (\_msearch)                                                             | Search             | Supported | Most usage   | -                                                                           |
| Point-in-time (\_search/point\_in\_time)                                             | Search             | Supported | Most usage   | REST-API-compatible with OpenSearch clients                                 |
| Reindex / Update-by-query / Delete-by-query                                          | Search             | Supported | Full surface | -                                                                           |
| Scroll (\_search/scroll)                                                             | Search             | Supported | Most usage   | deep pagination                                                             |
| Search (\_search + query DSL)                                                        | Search             | Supported | Common       | -                                                                           |
| Search templates (\_search/template, \_render/template)                              | Search             | Supported | Full surface | -                                                                           |
| Term vectors (\_termvectors / \_mtermvectors)                                        | Search             | Supported | Full surface | -                                                                           |
| Security plugin / fine-grained access control (\_plugins/\_security)                 | Security           | Partial   | Full surface | SSPL security component; LUCENIA\_INITIAL\_ADMIN\_PASSWORD                  |
| Vector search / k-NN (knn\_vector, \_plugins/\_knn)                                  | Vector & ML        | Supported | Full surface | confirmed vector support - Lucene-native HNSW/IVF/Faiss, hybrid BM25+vector |

#### How it works

On AWS your app talks to an **Amazon OpenSearch** domain over the OpenSearch REST API. Its OpenSearch or Elasticsearch client opens a connection to the domain endpoint and issues `_bulk`, `_search`, and the rest. To run that same app in the target cloud, the compiler provisions a **self-hosted Lucenia cluster** on Kubernetes (the Lucenia Helm chart) and points your client's endpoint at it.

Tensor9 configures the client endpoint to connect directly to the target cluster at build time. Lucenia presents an OpenSearch-compatible REST API, so your existing clients connect straight to it and keep the same request formats. No Tensor9 component handles these requests, so every index and query runs against the Lucenia cluster directly, at its own latency.

<div className="t9-diagram-scroll" role="region" aria-label="Scrollable diagram" tabIndex={0}>
  <img className="t9-diagram-light" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4MzYiIGhlaWdodD0iMTgwIiB2aWV3Qm94PSIwIDAgODM2IDE4MCIgcm9sZT0iaW1nIiBhcmlhLWxhYmVsPSJCZWZvcmU6IG9uIEFXUyB5b3VyIGFwcCdzIE9wZW5TZWFyY2ggY2xpZW50IHNwZWFrcyB0aGUgT3BlblNlYXJjaCBSRVNUIEFQSSB0byBhbiBBV1MtbWFuYWdlZCBBbWF6b24gT3BlblNlYXJjaCBkb21haW4uIEFmdGVyOiBpbiB0aGUgdGFyZ2V0IGNsb3VkIHRoZSBzYW1lIGFwcCBhbmQgdGhlIHNhbWUgY2xpZW50cyBzcGVhayB0aGUgc2FtZSBPcGVuU2VhcmNoIFJFU1Qgd2lyZSB0byBhIHNlbGYtaG9zdGVkIEx1Y2VuaWEgY2x1c3RlciBvbiBLdWJlcm5ldGVzLCB3aXRoIG5vIHByb3h5IGluIHRoZSBkYXRhIHBhdGguIj48c3R5bGU+dGV4dHtmb250LWZhbWlseTpJbnRlciwtYXBwbGUtc3lzdGVtLEJsaW5rTWFjU3lzdGVtRm9udCwnU2Vnb2UgVUknLFJvYm90bywnSGVsdmV0aWNhIE5ldWUnLEFyaWFsLHNhbnMtc2VyaWY7ZmlsbDojMzM0MTU1fTwvc3R5bGU+CjxyZWN0IHg9IjE2IiB5PSI0MCIgd2lkdGg9IjM5MCIgaGVpZ2h0PSIxMjQiIHJ4PSIxNCIgZmlsbD0iI2Y4ZmFmYyIgc3Ryb2tlPSIjY2JkNWUxIiBzdHJva2Utd2lkdGg9IjEuNCIgc3Ryb2tlLWRhc2hhcnJheT0iNSA1Ii8+Cjx0ZXh0IHg9IjMyIiB5PSI2MiIgc3R5bGU9ImZvbnQ6IDcwMCAxMHB4IEludGVyLCBzYW5zLXNlcmlmOyBsZXR0ZXItc3BhY2luZzogMS4zcHg7IGZpbGw6ICM5NGEzYjgiPk9OIEFXUyBUT0RBWTwvdGV4dD4KPHJlY3QgeD0iMzAiIHk9IjgwIiB3aWR0aD0iMTY0IiBoZWlnaHQ9IjYyIiByeD0iMTEiIGZpbGw9IiNmZmYiIHN0cm9rZT0iI2UyZThmMCIgc3Ryb2tlLXdpZHRoPSIxLjUiLz4KPHRleHQgeD0iMTEyIiB5PSIxMDYiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiA2NTAgMTMuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjMGYxNzJhIj5Zb3VyIGFwcDwvdGV4dD4KPHRleHQgeD0iMTEyIiB5PSIxMjQiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjNjQ3NDhiIj5PcGVuU2VhcmNoIGNsaWVudDwvdGV4dD4KPGxpbmUgeDE9IjE5NCIgeTE9IjExMSIgeDI9IjIyMiIgeTI9IjExMSIgc3Ryb2tlPSIjOTRhM2I4IiBzdHJva2Utd2lkdGg9IjIiLz4KPHJlY3QgeD0iMjIyIiB5PSI4MCIgd2lkdGg9IjE2NCIgaGVpZ2h0PSI2MiIgcng9IjExIiBmaWxsPSIjZmZmIiBzdHJva2U9IiNjYmQ1ZTEiIHN0cm9rZS13aWR0aD0iMS41Ii8+Cjx0ZXh0IHg9IjMwNCIgeT0iMTA1IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogNjUwIDEzLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzBmMTcyYTsgZm9udC1zaXplOjEycHgiPkFtYXpvbiBPcGVuU2VhcmNoPC90ZXh0Pgo8dGV4dCB4PSIzMDQiIHk9IjEyMyIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDExcHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICM2NDc0OGIiPkFXUy1tYW5hZ2VkIGRvbWFpbjwvdGV4dD4KPHJlY3QgeD0iNDMwIiB5PSI0MCIgd2lkdGg9IjM5MCIgaGVpZ2h0PSIxMjQiIHJ4PSIxNCIgZmlsbD0iI2Y4ZmFmYyIgc3Ryb2tlPSIjY2JkNWUxIiBzdHJva2Utd2lkdGg9IjEuNCIgc3Ryb2tlLWRhc2hhcnJheT0iNSA1Ii8+Cjx0ZXh0IHg9IjQ0NiIgeT0iNjIiIHN0eWxlPSJmb250OiA3MDAgMTBweCBJbnRlciwgc2Fucy1zZXJpZjsgbGV0dGVyLXNwYWNpbmc6IDEuM3B4OyBmaWxsOiAjOTRhM2I4OyBmaWxsOiMwNDc4NTciPk9OIFRIRSBUQVJHRVQgQ0xPVUQ8L3RleHQ+CjxyZWN0IHg9IjQ0NCIgeT0iODAiIHdpZHRoPSIxNjQiIGhlaWdodD0iNjIiIHJ4PSIxMSIgZmlsbD0iI2ZmZiIgc3Ryb2tlPSIjZTJlOGYwIiBzdHJva2Utd2lkdGg9IjEuNSIvPgo8dGV4dCB4PSI1MjYiIHk9IjEwNiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDY1MCAxMy41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICMwZjE3MmEiPllvdXIgYXBwPC90ZXh0Pgo8dGV4dCB4PSI1MjYiIHk9IjEyNCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDYwMCAxMXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjMDU5NjY5Ij5zYW1lIGNsaWVudHM8L3RleHQ+CjxsaW5lIHgxPSI2MDgiIHkxPSIxMTEiIHgyPSI2MzYiIHkyPSIxMTEiIHN0cm9rZT0iIzA1OTY2OSIgc3Ryb2tlLXdpZHRoPSIyIi8+CjxyZWN0IHg9IjYzNiIgeT0iODAiIHdpZHRoPSIxNjQiIGhlaWdodD0iNjIiIHJ4PSIxMSIgZmlsbD0iI2VjZmRmNSIgc3Ryb2tlPSIjMDU5NjY5IiBzdHJva2Utd2lkdGg9IjEuNyIvPgo8dGV4dCB4PSI3MTgiIHk9IjEwNSIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDcwMCAxMy41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICMwNDc4NTc7IGZvbnQtc2l6ZToxMnB4Ij5MdWNlbmlhIGNsdXN0ZXI8L3RleHQ+Cjx0ZXh0IHg9IjcxOCIgeT0iMTIzIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTAuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjMDQ3ODU3Ij5vbiBLdWJlcm5ldGVzPC90ZXh0Pgo8L3N2Zz4=" alt="Before: on AWS your app's OpenSearch client speaks the OpenSearch REST API to an AWS-managed Amazon OpenSearch domain. After: in the target cloud the same app and the same clients speak the same OpenSearch REST wire to a self-hosted Lucenia cluster on Kubernetes, with no proxy in the data path." />

  <img className="t9-diagram-dark" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4MzYiIGhlaWdodD0iMTgwIiB2aWV3Qm94PSIwIDAgODM2IDE4MCIgcm9sZT0iaW1nIiBhcmlhLWxhYmVsPSJCZWZvcmU6IG9uIEFXUyB5b3VyIGFwcCdzIE9wZW5TZWFyY2ggY2xpZW50IHNwZWFrcyB0aGUgT3BlblNlYXJjaCBSRVNUIEFQSSB0byBhbiBBV1MtbWFuYWdlZCBBbWF6b24gT3BlblNlYXJjaCBkb21haW4uIEFmdGVyOiBpbiB0aGUgdGFyZ2V0IGNsb3VkIHRoZSBzYW1lIGFwcCBhbmQgdGhlIHNhbWUgY2xpZW50cyBzcGVhayB0aGUgc2FtZSBPcGVuU2VhcmNoIFJFU1Qgd2lyZSB0byBhIHNlbGYtaG9zdGVkIEx1Y2VuaWEgY2x1c3RlciBvbiBLdWJlcm5ldGVzLCB3aXRoIG5vIHByb3h5IGluIHRoZSBkYXRhIHBhdGguIj48c3R5bGU+dGV4dHtmb250LWZhbWlseTpJbnRlciwtYXBwbGUtc3lzdGVtLEJsaW5rTWFjU3lzdGVtRm9udCwnU2Vnb2UgVUknLFJvYm90bywnSGVsdmV0aWNhIE5ldWUnLEFyaWFsLHNhbnMtc2VyaWY7ZmlsbDojY2JkNWUxfTwvc3R5bGU+CjxyZWN0IHg9IjE2IiB5PSI0MCIgd2lkdGg9IjM5MCIgaGVpZ2h0PSIxMjQiIHJ4PSIxNCIgZmlsbD0iIzFhMjYzMSIgc3Ryb2tlPSIjM2Q0ZjY2IiBzdHJva2Utd2lkdGg9IjEuNCIgc3Ryb2tlLWRhc2hhcnJheT0iNSA1Ii8+Cjx0ZXh0IHg9IjMyIiB5PSI2MiIgc3R5bGU9ImZvbnQ6IDcwMCAxMHB4IEludGVyLCBzYW5zLXNlcmlmOyBsZXR0ZXItc3BhY2luZzogMS4zcHg7IGZpbGw6ICM5NGEzYjgiPk9OIEFXUyBUT0RBWTwvdGV4dD4KPHJlY3QgeD0iMzAiIHk9IjgwIiB3aWR0aD0iMTY0IiBoZWlnaHQ9IjYyIiByeD0iMTEiIGZpbGw9IiMyNjI2MjYiIHN0cm9rZT0iIzNkNGU2NiIgc3Ryb2tlLXdpZHRoPSIxLjUiLz4KPHRleHQgeD0iMTEyIiB5PSIxMDYiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiA2NTAgMTMuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjYzljZWQ4Ij5Zb3VyIGFwcDwvdGV4dD4KPHRleHQgeD0iMTEyIiB5PSIxMjQiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjYzljZmQ4Ij5PcGVuU2VhcmNoIGNsaWVudDwvdGV4dD4KPGxpbmUgeDE9IjE5NCIgeTE9IjExMSIgeDI9IjIyMiIgeTI9IjExMSIgc3Ryb2tlPSIjNDE0ZTYyIiBzdHJva2Utd2lkdGg9IjIiLz4KPHJlY3QgeD0iMjIyIiB5PSI4MCIgd2lkdGg9IjE2NCIgaGVpZ2h0PSI2MiIgcng9IjExIiBmaWxsPSIjMjYyNjI2IiBzdHJva2U9IiMzZDRmNjYiIHN0cm9rZS13aWR0aD0iMS41Ii8+Cjx0ZXh0IHg9IjMwNCIgeT0iMTA1IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogNjUwIDEzLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogI2M5Y2VkODsgZm9udC1zaXplOjEycHgiPkFtYXpvbiBPcGVuU2VhcmNoPC90ZXh0Pgo8dGV4dCB4PSIzMDQiIHk9IjEyMyIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDExcHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICNjOWNmZDgiPkFXUy1tYW5hZ2VkIGRvbWFpbjwvdGV4dD4KPHJlY3QgeD0iNDMwIiB5PSI0MCIgd2lkdGg9IjM5MCIgaGVpZ2h0PSIxMjQiIHJ4PSIxNCIgZmlsbD0iIzFhMjYzMSIgc3Ryb2tlPSIjM2Q0ZjY2IiBzdHJva2Utd2lkdGg9IjEuNCIgc3Ryb2tlLWRhc2hhcnJheT0iNSA1Ii8+Cjx0ZXh0IHg9IjQ0NiIgeT0iNjIiIHN0eWxlPSJmb250OiA3MDAgMTBweCBJbnRlciwgc2Fucy1zZXJpZjsgbGV0dGVyLXNwYWNpbmc6IDEuM3B4OyBmaWxsOiAjOTRhM2I4OyBmaWxsOiAjOTBkZWM4Ij5PTiBUSEUgVEFSR0VUIENMT1VEPC90ZXh0Pgo8cmVjdCB4PSI0NDQiIHk9IjgwIiB3aWR0aD0iMTY0IiBoZWlnaHQ9IjYyIiByeD0iMTEiIGZpbGw9IiMyNjI2MjYiIHN0cm9rZT0iIzNkNGU2NiIgc3Ryb2tlLXdpZHRoPSIxLjUiLz4KPHRleHQgeD0iNTI2IiB5PSIxMDYiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiA2NTAgMTMuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjYzljZWQ4Ij5Zb3VyIGFwcDwvdGV4dD4KPHRleHQgeD0iNTI2IiB5PSIxMjQiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiA2MDAgMTFweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzkwZGVjNiI+c2FtZSBjbGllbnRzPC90ZXh0Pgo8bGluZSB4MT0iNjA4IiB5MT0iMTExIiB4Mj0iNjM2IiB5Mj0iMTExIiBzdHJva2U9IiMwNTk2NjkiIHN0cm9rZS13aWR0aD0iMiIvPgo8cmVjdCB4PSI2MzYiIHk9IjgwIiB3aWR0aD0iMTY0IiBoZWlnaHQ9IjYyIiByeD0iMTEiIGZpbGw9IiMxYTMxMjYiIHN0cm9rZT0iIzA1OTY2OSIgc3Ryb2tlLXdpZHRoPSIxLjciLz4KPHRleHQgeD0iNzE4IiB5PSIxMDUiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiA3MDAgMTMuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjOTBkZWM4OyBmb250LXNpemU6MTJweCI+THVjZW5pYSBjbHVzdGVyPC90ZXh0Pgo8dGV4dCB4PSI3MTgiIHk9IjEyMyIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDEwLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzkwZGVjOCI+b24gS3ViZXJuZXRlczwvdGV4dD4KPC9zdmc+" alt="Before: on AWS your app's OpenSearch client speaks the OpenSearch REST API to an AWS-managed Amazon OpenSearch domain. After: in the target cloud the same app and the same clients speak the same OpenSearch REST wire to a self-hosted Lucenia cluster on Kubernetes, with no proxy in the data path." />
</div>

<p className="t9-caption">Your OpenSearch domain is compiled to a self-hosted Lucenia cluster on Kubernetes; the endpoint is rewired to it and your existing clients connect straight through, with no proxy in the data path.</p>

#### A compatible fork

Lucenia is a separate project derived from OpenSearch 2.14, built by the creator of OpenSearch. It uses Apache Lucene 10.4 and documents API and mixed-cluster compatibility with OpenSearch and Elasticsearch. Lucenia is dual-licensed under Apache-2.0 and SSPL.

Because that API tracks roughly OpenSearch 2.18, your core client calls (`_doc`, `_bulk`, `_search`, mappings, aggregations) land as they do today, and vector search is confirmed (k-NN with Lucene-native HNSW, IVF, and Faiss, plus hybrid BM25 and vector). The caveat is maturity: Lucenia is at an **early 0.x version** (0.11.1 at the current release), so it is a young, compatible engine you adopt deliberately, not a generally-available managed peer of the cloud services.

<div className="t9-diagram-scroll" role="region" aria-label="Scrollable diagram" tabIndex={0}>
  <img className="t9-diagram-light" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4MzYiIGhlaWdodD0iMTYwIiB2aWV3Qm94PSIwIDAgODM2IDE2MCIgcm9sZT0iaW1nIiBhcmlhLWxhYmVsPSJZb3VyIGV4aXN0aW5nIE9wZW5TZWFyY2ggUkVTVCBjbGllbnRzIChjb3JlIGRvY3VtZW50LCBzZWFyY2gsIGFuZCBhZ2dyZWdhdGlvbiBjYWxscyBwbHVzIHZlY3RvciBzZWFyY2gpIHJlYWNoIEx1Y2VuaWEsIHdoaWNoIGlzIGEgc2VwYXJhdGUgZW5naW5lOiBhbiBPcGVuU2VhcmNoLTIuMTQtZGVyaXZlZCwgQVBJLWNvbXBhdGlibGUgZm9yayBidWlsdCBvbiBBcGFjaGUgTHVjZW5lIDEwLjQgYnkgdGhlIGNyZWF0b3Igb2YgT3BlblNlYXJjaCwgZHVhbC1saWNlbnNlZCBBcGFjaGUtMi4wIGFuZCBTU1BMLCBhbmQgY3VycmVudGx5IGF0IGFuIGVhcmx5IDAueCByZWxlYXNlLiI+PHN0eWxlPnRleHR7Zm9udC1mYW1pbHk6SW50ZXIsLWFwcGxlLXN5c3RlbSxCbGlua01hY1N5c3RlbUZvbnQsJ1NlZ29lIFVJJyxSb2JvdG8sJ0hlbHZldGljYSBOZXVlJyxBcmlhbCxzYW5zLXNlcmlmO2ZpbGw6IzMzNDE1NX08L3N0eWxlPgo8ZGVmcz48bWFya2VyIGlkPSJsdWMyLWEiIHZpZXdCb3g9IjAgMCAxMCAxMCIgcmVmWD0iOCIgcmVmWT0iNSIgbWFya2VyV2lkdGg9IjYuNSIgbWFya2VySGVpZ2h0PSI2LjUiIG9yaWVudD0iYXV0by1zdGFydC1yZXZlcnNlIj48cGF0aCBkPSJNMCwwIEwxMCw1IEwwLDEwIHoiIGZpbGw9IiM5NGEzYjgiLz48L21hcmtlcj48L2RlZnM+Cjx0ZXh0IHg9IjI0IiB5PSIyNiIgc3R5bGU9ImZvbnQ6IDcwMCAxMHB4IEludGVyLCBzYW5zLXNlcmlmOyBsZXR0ZXItc3BhY2luZzogMS4zcHg7IGZpbGw6ICM5NGEzYjgiPllPVVIgT1BFTlNFQVJDSCBSRVNUIENMSUVOVFM8L3RleHQ+Cjx0ZXh0IHg9IjYwMCIgeT0iMjYiIHN0eWxlPSJmb250OiA3MDAgMTBweCBJbnRlciwgc2Fucy1zZXJpZjsgbGV0dGVyLXNwYWNpbmc6IDEuM3B4OyBmaWxsOiAjOTRhM2I4OyBmaWxsOiMwNDc4NTciPkEgU0VQQVJBVEUsIENPTVBBVElCTEUgRU5HSU5FPC90ZXh0Pgo8cmVjdCB4PSIyNCIgeT0iMzgiIHdpZHRoPSI0ODYiIGhlaWdodD0iMTA4IiByeD0iMTMiIGZpbGw9IiNmOGZhZmMiIHN0cm9rZT0iI2UyZThmMCIgc3Ryb2tlLXdpZHRoPSIxLjUiLz4KPHRleHQgeD0iNDIiIHk9IjYzIiBzdHlsZT0iZm9udDogNjUwIDEzLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzBmMTcyYSI+U2FtZSBjbGllbnQgY2FsbHM8L3RleHQ+Cjx0ZXh0IHg9IjQyIiB5PSI4NyIgc3R5bGU9ImZvbnQ6IDExcHggJ1NGIE1vbm8nLCB1aS1tb25vc3BhY2UsICdKZXRCcmFpbnMgTW9ubycsIE1lbmxvLCBtb25vc3BhY2U7IGZpbGw6ICM0NzU1NjkiPl9kb2MgwrcgX2J1bGsgwrcgX3NlYXJjaCDCtyBfbWFwcGluZyDCtyBfYWdnczwvdGV4dD4KPHRleHQgeD0iNDIiIHk9IjEwNyIgc3R5bGU9ImZvbnQ6IDExcHggJ1NGIE1vbm8nLCB1aS1tb25vc3BhY2UsICdKZXRCcmFpbnMgTW9ubycsIE1lbmxvLCBtb25vc3BhY2U7IGZpbGw6ICM0NzU1NjkiPl9wbHVnaW5zL19rbm4gwrcga25uX3ZlY3RvciDCtyBoeWJyaWQgQk0yNSt2ZWN0b3I8L3RleHQ+Cjx0ZXh0IHg9IjQyIiB5PSIxMjciIHN0eWxlPSJmb250OiAxMXB4ICdTRiBNb25vJywgdWktbW9ub3NwYWNlLCAnSmV0QnJhaW5zIE1vbm8nLCBNZW5sbywgbW9ub3NwYWNlOyBmaWxsOiAjNDc1NTY5Ij5BUEkgdHJhY2tzIHJvdWdobHkgT3BlblNlYXJjaCAyLjE4PC90ZXh0Pgo8bGluZSB4MT0iNTEwIiB5MT0iOTIiIHgyPSI1NjgiIHkyPSI5MiIgc3Ryb2tlPSIjOTRhM2I4IiBzdHJva2Utd2lkdGg9IjIiIG1hcmtlci1lbmQ9InVybCgjbHVjMi1hKSIvPgo8cmVjdCB4PSI1NzIiIHk9IjM4IiB3aWR0aD0iMjQwIiBoZWlnaHQ9IjEwOCIgcng9IjEzIiBmaWxsPSIjZWNmZGY1IiBzdHJva2U9IiMwNTk2NjkiIHN0cm9rZS13aWR0aD0iMS43Ii8+Cjx0ZXh0IHg9IjY5MiIgeT0iNzQiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiA3MDAgMTMuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjMDQ3ODU3Ij5MdWNlbmlhPC90ZXh0Pgo8dGV4dCB4PSI2OTIiIHk9Ijk2IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTAuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjMDQ3ODU3Ij5PcGVuU2VhcmNoLTIuMTQtZGVyaXZlZCBmb3JrPC90ZXh0Pgo8dGV4dCB4PSI2OTIiIHk9IjExNSIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDEwLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzA0Nzg1NyI+QXBhY2hlIEx1Y2VuZSAxMC40IMK3IDAueDwvdGV4dD4KPHRleHQgeD0iNjkyIiB5PSIxMzQiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjNjQ3NDhiIj5kdWFsIEFwYWNoZS0yLjAgLyBTU1BMPC90ZXh0Pgo8L3N2Zz4=" alt="Your existing OpenSearch REST clients (core document, search, and aggregation calls plus vector search) reach Lucenia, which is a separate engine: an OpenSearch-2.14-derived, API-compatible fork built on Apache Lucene 10.4 by the creator of OpenSearch, dual-licensed Apache-2.0 and SSPL, and currently at an early 0.x release." />

  <img className="t9-diagram-dark" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4MzYiIGhlaWdodD0iMTYwIiB2aWV3Qm94PSIwIDAgODM2IDE2MCIgcm9sZT0iaW1nIiBhcmlhLWxhYmVsPSJZb3VyIGV4aXN0aW5nIE9wZW5TZWFyY2ggUkVTVCBjbGllbnRzIChjb3JlIGRvY3VtZW50LCBzZWFyY2gsIGFuZCBhZ2dyZWdhdGlvbiBjYWxscyBwbHVzIHZlY3RvciBzZWFyY2gpIHJlYWNoIEx1Y2VuaWEsIHdoaWNoIGlzIGEgc2VwYXJhdGUgZW5naW5lOiBhbiBPcGVuU2VhcmNoLTIuMTQtZGVyaXZlZCwgQVBJLWNvbXBhdGlibGUgZm9yayBidWlsdCBvbiBBcGFjaGUgTHVjZW5lIDEwLjQgYnkgdGhlIGNyZWF0b3Igb2YgT3BlblNlYXJjaCwgZHVhbC1saWNlbnNlZCBBcGFjaGUtMi4wIGFuZCBTU1BMLCBhbmQgY3VycmVudGx5IGF0IGFuIGVhcmx5IDAueCByZWxlYXNlLiI+PHN0eWxlPnRleHR7Zm9udC1mYW1pbHk6SW50ZXIsLWFwcGxlLXN5c3RlbSxCbGlua01hY1N5c3RlbUZvbnQsJ1NlZ29lIFVJJyxSb2JvdG8sJ0hlbHZldGljYSBOZXVlJyxBcmlhbCxzYW5zLXNlcmlmO2ZpbGw6I2NiZDVlMX08L3N0eWxlPgo8ZGVmcz48bWFya2VyIGlkPSJsdWMyLWEiIHZpZXdCb3g9IjAgMCAxMCAxMCIgcmVmWD0iOCIgcmVmWT0iNSIgbWFya2VyV2lkdGg9IjYuNSIgbWFya2VySGVpZ2h0PSI2LjUiIG9yaWVudD0iYXV0by1zdGFydC1yZXZlcnNlIj48cGF0aCBkPSJNMCwwIEwxMCw1IEwwLDEwIHoiIGZpbGw9IiM5NGEzYjgiLz48L21hcmtlcj48L2RlZnM+Cjx0ZXh0IHg9IjI0IiB5PSIyNiIgc3R5bGU9ImZvbnQ6IDcwMCAxMHB4IEludGVyLCBzYW5zLXNlcmlmOyBsZXR0ZXItc3BhY2luZzogMS4zcHg7IGZpbGw6ICM5NGEzYjgiPllPVVIgT1BFTlNFQVJDSCBSRVNUIENMSUVOVFM8L3RleHQ+Cjx0ZXh0IHg9IjYwMCIgeT0iMjYiIHN0eWxlPSJmb250OiA3MDAgMTBweCBJbnRlciwgc2Fucy1zZXJpZjsgbGV0dGVyLXNwYWNpbmc6IDEuM3B4OyBmaWxsOiAjOTRhM2I4OyBmaWxsOiAjOTBkZWM4Ij5BIFNFUEFSQVRFLCBDT01QQVRJQkxFIEVOR0lORTwvdGV4dD4KPHJlY3QgeD0iMjQiIHk9IjM4IiB3aWR0aD0iNDg2IiBoZWlnaHQ9IjEwOCIgcng9IjEzIiBmaWxsPSIjMWEyNjMxIiBzdHJva2U9IiMzZDRlNjYiIHN0cm9rZS13aWR0aD0iMS41Ii8+Cjx0ZXh0IHg9IjQyIiB5PSI2MyIgc3R5bGU9ImZvbnQ6IDY1MCAxMy41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICNjOWNlZDgiPlNhbWUgY2xpZW50IGNhbGxzPC90ZXh0Pgo8dGV4dCB4PSI0MiIgeT0iODciIHN0eWxlPSJmb250OiAxMXB4ICdTRiBNb25vJywgdWktbW9ub3NwYWNlLCAnSmV0QnJhaW5zIE1vbm8nLCBNZW5sbywgbW9ub3NwYWNlOyBmaWxsOiAjYzljZmQ4Ij5fZG9jIMK3IF9idWxrIMK3IF9zZWFyY2ggwrcgX21hcHBpbmcgwrcgX2FnZ3M8L3RleHQ+Cjx0ZXh0IHg9IjQyIiB5PSIxMDciIHN0eWxlPSJmb250OiAxMXB4ICdTRiBNb25vJywgdWktbW9ub3NwYWNlLCAnSmV0QnJhaW5zIE1vbm8nLCBNZW5sbywgbW9ub3NwYWNlOyBmaWxsOiAjYzljZmQ4Ij5fcGx1Z2lucy9fa25uIMK3IGtubl92ZWN0b3IgwrcgaHlicmlkIEJNMjUrdmVjdG9yPC90ZXh0Pgo8dGV4dCB4PSI0MiIgeT0iMTI3IiBzdHlsZT0iZm9udDogMTFweCAnU0YgTW9ubycsIHVpLW1vbm9zcGFjZSwgJ0pldEJyYWlucyBNb25vJywgTWVubG8sIG1vbm9zcGFjZTsgZmlsbDogI2M5Y2ZkOCI+QVBJIHRyYWNrcyByb3VnaGx5IE9wZW5TZWFyY2ggMi4xODwvdGV4dD4KPGxpbmUgeDE9IjUxMCIgeTE9IjkyIiB4Mj0iNTY4IiB5Mj0iOTIiIHN0cm9rZT0iIzQxNGU2MiIgc3Ryb2tlLXdpZHRoPSIyIiBtYXJrZXItZW5kPSJ1cmwoI2x1YzItYSkiLz4KPHJlY3QgeD0iNTcyIiB5PSIzOCIgd2lkdGg9IjI0MCIgaGVpZ2h0PSIxMDgiIHJ4PSIxMyIgZmlsbD0iIzFhMzEyNiIgc3Ryb2tlPSIjMDU5NjY5IiBzdHJva2Utd2lkdGg9IjEuNyIvPgo8dGV4dCB4PSI2OTIiIHk9Ijc0IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogNzAwIDEzLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzkwZGVjOCI+THVjZW5pYTwvdGV4dD4KPHRleHQgeD0iNjkyIiB5PSI5NiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDEwLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzkwZGVjOCI+T3BlblNlYXJjaC0yLjE0LWRlcml2ZWQgZm9yazwvdGV4dD4KPHRleHQgeD0iNjkyIiB5PSIxMTUiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMC41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICM5MGRlYzgiPkFwYWNoZSBMdWNlbmUgMTAuNCDCtyAwLng8L3RleHQ+Cjx0ZXh0IHg9IjY5MiIgeT0iMTM0IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTFweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogI2M5Y2ZkOCI+ZHVhbCBBcGFjaGUtMi4wIC8gU1NQTDwvdGV4dD4KPC9zdmc+" alt="Your existing OpenSearch REST clients (core document, search, and aggregation calls plus vector search) reach Lucenia, which is a separate engine: an OpenSearch-2.14-derived, API-compatible fork built on Apache Lucene 10.4 by the creator of OpenSearch, dual-licensed Apache-2.0 and SSPL, and currently at an early 0.x release." />
</div>

<p className="t9-caption">Lucenia is not the OpenSearch engine itself: it is a separate, API-compatible fork on Apache Lucene 10.4, so the REST compatibility is what keeps your clients working, not a shared codebase.</p>

#### What is confirmed, and what is unverified

Lucenia confirms support for documents, search, aggregations, and vector search. Its k-NN support uses Lucene-native HNSW, IVF, and Faiss; hybrid BM25 and vector queries run on the Lucene 10.4 core. Existing OpenSearch REST clients connect directly.

The rest of OpenSearch's `_plugins/*` features sit at the lower confidence level. SQL and PPL, Index State Management, Alerting, Anomaly Detection, and ML Commons have no published per-plugin parity matrix on Lucenia, so their compatibility remains unverified. Check the specific APIs your app calls against your Lucenia version before you depend on them, and treat Lucenia's own performance and cost marketing (which publishes no methodology) as uncited.

<div className="t9-diagram-scroll" role="region" aria-label="Scrollable diagram" tabIndex={0}>
  <img className="t9-diagram-light" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4MzYiIGhlaWdodD0iMTk2IiB2aWV3Qm94PSIwIDAgODM2IDE5NiIgcm9sZT0iaW1nIiBhcmlhLWxhYmVsPSJPbiBMdWNlbmlhLCBjb3JlIGRvY3VtZW50cywgc2VhcmNoLCBhZ2dyZWdhdGlvbnMsIGFuZCB2ZWN0b3Igc2VhcmNoIChrLU5OIHdpdGggTHVjZW5lLW5hdGl2ZSBITlNXLCBJVkYsIGFuZCBGYWlzcywgcGx1cyBoeWJyaWQgQk0yNSBhbmQgdmVjdG9yKSBhcmUgY29uZmlybWVkIGFuZCB5b3VyIE9wZW5TZWFyY2ggUkVTVCBjbGllbnRzIGtlZXAgd29ya2luZy4gVGhlIG90aGVyIE9wZW5TZWFyY2ggX3BsdWdpbnMgc3VyZmFjZXMgKFNRTCwgUFBMLCBpbmRleCBzdGF0ZSBtYW5hZ2VtZW50LCBhbGVydGluZywgYW5vbWFseSBkZXRlY3Rpb24sIE1MIENvbW1vbnMpIGhhdmUgbm8gcHVibGlzaGVkIHBlci1wbHVnaW4gcGFyaXR5IG1hdHJpeCwgc28gdHJlYXQgdGhlbSBhcyB1bnZlcmlmaWVkIGFuZCB2ZXJpZnkgYmVmb3JlIHlvdSBkZXBlbmQgb24gdGhlbS4iPjxzdHlsZT50ZXh0e2ZvbnQtZmFtaWx5OkludGVyLC1hcHBsZS1zeXN0ZW0sQmxpbmtNYWNTeXN0ZW1Gb250LCdTZWdvZSBVSScsUm9ib3RvLCdIZWx2ZXRpY2EgTmV1ZScsQXJpYWwsc2Fucy1zZXJpZjtmaWxsOiMzMzQxNTV9PC9zdHlsZT4KPHRleHQgeD0iNDQiIHk9IjI2IiBzdHlsZT0iZm9udDogNzAwIDEwcHggSW50ZXIsIHNhbnMtc2VyaWY7IGxldHRlci1zcGFjaW5nOiAxLjNweDsgZmlsbDogIzk0YTNiOCI+V0hBVCBUSEUgRk9SSyBDT1ZFUlM8L3RleHQ+Cjx0ZXh0IHg9IjQ3MiIgeT0iMjYiIHN0eWxlPSJmb250OiA3MDAgMTBweCBJbnRlciwgc2Fucy1zZXJpZjsgbGV0dGVyLXNwYWNpbmc6IDEuM3B4OyBmaWxsOiAjOTRhM2I4OyBmaWxsOiMwNDc4NTciPkhPVyBUTyBSRUFEIElUPC90ZXh0Pgo8cmVjdCB4PSI0NCIgeT0iMzgiIHdpZHRoPSIyODgiIGhlaWdodD0iNTgiIHJ4PSIxMCIgZmlsbD0iI2VjZmRmNSIgc3Ryb2tlPSIjMDU5NjY5IiBzdHJva2Utd2lkdGg9IjEuNiIvPgo8dGV4dCB4PSI2MCIgeT0iNjIiIHN0eWxlPSJmb250OiA3MDAgMTMuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjMDQ3ODU3OyBmb250LXNpemU6MTIuNXB4Ij5Db3JlICsgdmVjdG9yOiBjb25maXJtZWQ8L3RleHQ+Cjx0ZXh0IHg9IjYwIiB5PSI4MCIgc3R5bGU9ImZvbnQ6IDEwLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzA0Nzg1NyI+X3NlYXJjaCDCtyBfYWdncyDCtyBrLU5OIEhOU1cvSVZGL0ZhaXNzPC90ZXh0Pgo8cmVjdCB4PSIzNjAiIHk9IjM4IiB3aWR0aD0iNDM2IiBoZWlnaHQ9IjU4IiByeD0iMTAiIGZpbGw9IiNmOGZhZmMiIHN0cm9rZT0iI2NiZDVlMSIgc3Ryb2tlLXdpZHRoPSIxLjQiLz4KPHRleHQgeD0iMzc2IiB5PSI2MiIgc3R5bGU9ImZvbnQ6IDY1MCAxMy41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICMwZjE3MmE7IGZvbnQtc2l6ZToxMi41cHgiPlNlcnZlcyB5b3VyIE9wZW5TZWFyY2ggUkVTVCBjbGllbnRzPC90ZXh0Pgo8dGV4dCB4PSIzNzYiIHk9IjgyIiBzdHlsZT0iZm9udDogMTFweCAnU0YgTW9ubycsIHVpLW1vbm9zcGFjZSwgJ0pldEJyYWlucyBNb25vJywgTWVubG8sIG1vbm9zcGFjZTsgZmlsbDogIzQ3NTU2OSI+aHlicmlkIEJNMjUgKyB2ZWN0b3IsIG5hdGl2ZSB0byBMdWNlbmUgMTAuNDwvdGV4dD4KPHJlY3QgeD0iNDQiIHk9IjEwNCIgd2lkdGg9IjI4OCIgaGVpZ2h0PSI1OCIgcng9IjEwIiBmaWxsPSIjZmZmYmViIiBzdHJva2U9IiNmNTllMGIiIHN0cm9rZS13aWR0aD0iMS41Ii8+Cjx0ZXh0IHg9IjYwIiB5PSIxMjgiIHN0eWxlPSJmb250OiA2MDAgMTFweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogI2I0NTMwOTsgZm9udC1zaXplOjEyLjVweCI+T3RoZXIgX3BsdWdpbnMvKjogdW52ZXJpZmllZDwvdGV4dD4KPHRleHQgeD0iNjAiIHk9IjE0NiIgc3R5bGU9ImZvbnQ6IDExcHggJ1NGIE1vbm8nLCB1aS1tb25vc3BhY2UsICdKZXRCcmFpbnMgTW9ubycsIE1lbmxvLCBtb25vc3BhY2U7IGZpbGw6ICM0NzU1Njk7IGZpbGw6I2I0NTMwOSI+U1FMIMK3IFBQTCDCtyBJU00gwrcgYWxlcnRpbmcgwrcgQUQgwrcgTUw8L3RleHQ+CjxyZWN0IHg9IjM2MCIgeT0iMTA0IiB3aWR0aD0iNDM2IiBoZWlnaHQ9IjU4IiByeD0iMTAiIGZpbGw9IiNmOGZhZmMiIHN0cm9rZT0iI2NiZDVlMSIgc3Ryb2tlLXdpZHRoPSIxLjQiLz4KPHRleHQgeD0iMzc2IiB5PSIxMjgiIHN0eWxlPSJmb250OiA2NTAgMTMuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjMGYxNzJhOyBmb250LXNpemU6MTIuNXB4Ij5ObyBwdWJsaXNoZWQgcGVyLXBsdWdpbiBwYXJpdHkgbWF0cml4PC90ZXh0Pgo8dGV4dCB4PSIzNzYiIHk9IjE0OCIgc3R5bGU9ImZvbnQ6IDExcHggJ1NGIE1vbm8nLCB1aS1tb25vc3BhY2UsICdKZXRCcmFpbnMgTW9ubycsIE1lbmxvLCBtb25vc3BhY2U7IGZpbGw6ICM0NzU1NjkiPnZlcmlmeSB0aGUgQVBJcyB5b3UgdXNlIGJlZm9yZSB5b3UgZGVwZW5kIG9uIHRoZW08L3RleHQ+Cjx0ZXh0IHg9IjQ0IiB5PSIxODQiIHN0eWxlPSJmb250OiA2MDAgMTFweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogI2I0NTMwOSI+4pazIFZlY3RvciBzZWFyY2ggaXMgY29uZmlybWVkOyB0aGUgcmVzdCBvZiBfcGx1Z2lucy8qIGlzIHVudmVyaWZpZWQgb24gTHVjZW5pYTwvdGV4dD4KPC9zdmc+" alt="On Lucenia, core documents, search, aggregations, and vector search (k-NN with Lucene-native HNSW, IVF, and Faiss, plus hybrid BM25 and vector) are confirmed and your OpenSearch REST clients keep working. The other OpenSearch _plugins surfaces (SQL, PPL, index state management, alerting, anomaly detection, ML Commons) have no published per-plugin parity matrix, so treat them as unverified and verify before you depend on them." />

  <img className="t9-diagram-dark" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4MzYiIGhlaWdodD0iMTk2IiB2aWV3Qm94PSIwIDAgODM2IDE5NiIgcm9sZT0iaW1nIiBhcmlhLWxhYmVsPSJPbiBMdWNlbmlhLCBjb3JlIGRvY3VtZW50cywgc2VhcmNoLCBhZ2dyZWdhdGlvbnMsIGFuZCB2ZWN0b3Igc2VhcmNoIChrLU5OIHdpdGggTHVjZW5lLW5hdGl2ZSBITlNXLCBJVkYsIGFuZCBGYWlzcywgcGx1cyBoeWJyaWQgQk0yNSBhbmQgdmVjdG9yKSBhcmUgY29uZmlybWVkIGFuZCB5b3VyIE9wZW5TZWFyY2ggUkVTVCBjbGllbnRzIGtlZXAgd29ya2luZy4gVGhlIG90aGVyIE9wZW5TZWFyY2ggX3BsdWdpbnMgc3VyZmFjZXMgKFNRTCwgUFBMLCBpbmRleCBzdGF0ZSBtYW5hZ2VtZW50LCBhbGVydGluZywgYW5vbWFseSBkZXRlY3Rpb24sIE1MIENvbW1vbnMpIGhhdmUgbm8gcHVibGlzaGVkIHBlci1wbHVnaW4gcGFyaXR5IG1hdHJpeCwgc28gdHJlYXQgdGhlbSBhcyB1bnZlcmlmaWVkIGFuZCB2ZXJpZnkgYmVmb3JlIHlvdSBkZXBlbmQgb24gdGhlbS4iPjxzdHlsZT50ZXh0e2ZvbnQtZmFtaWx5OkludGVyLC1hcHBsZS1zeXN0ZW0sQmxpbmtNYWNTeXN0ZW1Gb250LCdTZWdvZSBVSScsUm9ib3RvLCdIZWx2ZXRpY2EgTmV1ZScsQXJpYWwsc2Fucy1zZXJpZjtmaWxsOiNjYmQ1ZTF9PC9zdHlsZT4KPHRleHQgeD0iNDQiIHk9IjI2IiBzdHlsZT0iZm9udDogNzAwIDEwcHggSW50ZXIsIHNhbnMtc2VyaWY7IGxldHRlci1zcGFjaW5nOiAxLjNweDsgZmlsbDogIzk0YTNiOCI+V0hBVCBUSEUgRk9SSyBDT1ZFUlM8L3RleHQ+Cjx0ZXh0IHg9IjQ3MiIgeT0iMjYiIHN0eWxlPSJmb250OiA3MDAgMTBweCBJbnRlciwgc2Fucy1zZXJpZjsgbGV0dGVyLXNwYWNpbmc6IDEuM3B4OyBmaWxsOiAjOTRhM2I4OyBmaWxsOiAjOTBkZWM4Ij5IT1cgVE8gUkVBRCBJVDwvdGV4dD4KPHJlY3QgeD0iNDQiIHk9IjM4IiB3aWR0aD0iMjg4IiBoZWlnaHQ9IjU4IiByeD0iMTAiIGZpbGw9IiMxYTMxMjYiIHN0cm9rZT0iIzA1OTY2OSIgc3Ryb2tlLXdpZHRoPSIxLjYiLz4KPHRleHQgeD0iNjAiIHk9IjYyIiBzdHlsZT0iZm9udDogNzAwIDEzLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzkwZGVjODsgZm9udC1zaXplOjEyLjVweCI+Q29yZSArIHZlY3RvcjogY29uZmlybWVkPC90ZXh0Pgo8dGV4dCB4PSI2MCIgeT0iODAiIHN0eWxlPSJmb250OiAxMC41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICM5MGRlYzgiPl9zZWFyY2ggwrcgX2FnZ3Mgwrcgay1OTiBITlNXL0lWRi9GYWlzczwvdGV4dD4KPHJlY3QgeD0iMzYwIiB5PSIzOCIgd2lkdGg9IjQzNiIgaGVpZ2h0PSI1OCIgcng9IjEwIiBmaWxsPSIjMWEyNjMxIiBzdHJva2U9IiMzZDRmNjYiIHN0cm9rZS13aWR0aD0iMS40Ii8+Cjx0ZXh0IHg9IjM3NiIgeT0iNjIiIHN0eWxlPSJmb250OiA2NTAgMTMuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjYzljZWQ4OyBmb250LXNpemU6MTIuNXB4Ij5TZXJ2ZXMgeW91ciBPcGVuU2VhcmNoIFJFU1QgY2xpZW50czwvdGV4dD4KPHRleHQgeD0iMzc2IiB5PSI4MiIgc3R5bGU9ImZvbnQ6IDExcHggJ1NGIE1vbm8nLCB1aS1tb25vc3BhY2UsICdKZXRCcmFpbnMgTW9ubycsIE1lbmxvLCBtb25vc3BhY2U7IGZpbGw6ICNjOWNmZDgiPmh5YnJpZCBCTTI1ICsgdmVjdG9yLCBuYXRpdmUgdG8gTHVjZW5lIDEwLjQ8L3RleHQ+CjxyZWN0IHg9IjQ0IiB5PSIxMDQiIHdpZHRoPSIyODgiIGhlaWdodD0iNTgiIHJ4PSIxMCIgZmlsbD0iIzMxMmQxYSIgc3Ryb2tlPSIjZjU5ZTBiIiBzdHJva2Utd2lkdGg9IjEuNSIvPgo8dGV4dCB4PSI2MCIgeT0iMTI4IiBzdHlsZT0iZm9udDogNjAwIDExcHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICNkZWIyOTA7IGZvbnQtc2l6ZToxMi41cHgiPk90aGVyIF9wbHVnaW5zLyo6IHVudmVyaWZpZWQ8L3RleHQ+Cjx0ZXh0IHg9IjYwIiB5PSIxNDYiIHN0eWxlPSJmb250OiAxMXB4ICdTRiBNb25vJywgdWktbW9ub3NwYWNlLCAnSmV0QnJhaW5zIE1vbm8nLCBNZW5sbywgbW9ub3NwYWNlOyBmaWxsOiAjYzljZmQ4OyBmaWxsOiAjZGViMjkwIj5TUUwgwrcgUFBMIMK3IElTTSDCtyBhbGVydGluZyDCtyBBRCDCtyBNTDwvdGV4dD4KPHJlY3QgeD0iMzYwIiB5PSIxMDQiIHdpZHRoPSI0MzYiIGhlaWdodD0iNTgiIHJ4PSIxMCIgZmlsbD0iIzFhMjYzMSIgc3Ryb2tlPSIjM2Q0ZjY2IiBzdHJva2Utd2lkdGg9IjEuNCIvPgo8dGV4dCB4PSIzNzYiIHk9IjEyOCIgc3R5bGU9ImZvbnQ6IDY1MCAxMy41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICNjOWNlZDg7IGZvbnQtc2l6ZToxMi41cHgiPk5vIHB1Ymxpc2hlZCBwZXItcGx1Z2luIHBhcml0eSBtYXRyaXg8L3RleHQ+Cjx0ZXh0IHg9IjM3NiIgeT0iMTQ4IiBzdHlsZT0iZm9udDogMTFweCAnU0YgTW9ubycsIHVpLW1vbm9zcGFjZSwgJ0pldEJyYWlucyBNb25vJywgTWVubG8sIG1vbm9zcGFjZTsgZmlsbDogI2M5Y2ZkOCI+dmVyaWZ5IHRoZSBBUElzIHlvdSB1c2UgYmVmb3JlIHlvdSBkZXBlbmQgb24gdGhlbTwvdGV4dD4KPHRleHQgeD0iNDQiIHk9IjE4NCIgc3R5bGU9ImZvbnQ6IDYwMCAxMXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjZGViMjkwIj7ilrMgVmVjdG9yIHNlYXJjaCBpcyBjb25maXJtZWQ7IHRoZSByZXN0IG9mIF9wbHVnaW5zLyogaXMgdW52ZXJpZmllZCBvbiBMdWNlbmlhPC90ZXh0Pgo8L3N2Zz4=" alt="On Lucenia, core documents, search, aggregations, and vector search (k-NN with Lucene-native HNSW, IVF, and Faiss, plus hybrid BM25 and vector) are confirmed and your OpenSearch REST clients keep working. The other OpenSearch _plugins surfaces (SQL, PPL, index state management, alerting, anomaly detection, ML Commons) have no published per-plugin parity matrix, so treat them as unverified and verify before you depend on them." />
</div>

<p className="t9-caption">Core and vector search are confirmed on Lucenia; the other \_plugins/\* features have no published parity matrix, so this page marks them unverified.</p>

#### What changes: you operate it

You operate the cluster. On the AWS domain, AWS ran high availability, version upgrades, daily snapshots, and fine-grained access control under a managed SLA. A self-hosted Lucenia cluster is **yours to run**: you define the node pools (data and master), replica counts, and cross-zone placement; you schedule snapshots; and you own version upgrades on an early 0.x project, where releases can move quickly and upgrade paths are still maturing.

Security is re-expressed too. The access control AWS wired into the domain becomes Lucenia's own security configuration (its SSPL security component, with the initial admin credential set through `LUCENIA_INITIAL_ADMIN_PASSWORD`), configured out of band rather than inherited from AWS. There is no provider availability SLA here: the cluster's uptime is whatever you run, and its latency and throughput are its own, reported by your monitoring.

<div className="t9-diagram-scroll" role="region" aria-label="Scrollable diagram" tabIndex={0}>
  <img className="t9-diagram-light" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4MzYiIGhlaWdodD0iMTg0IiB2aWV3Qm94PSIwIDAgODM2IDE4NCIgcm9sZT0iaW1nIiBhcmlhLWxhYmVsPSJPbiB0aGUgQVdTIGRvbWFpbiBBV1MgcmFuIGhpZ2ggYXZhaWxhYmlsaXR5LCB2ZXJzaW9uIHVwZ3JhZGVzLCBtYW5hZ2VkIGRhaWx5IHNuYXBzaG90cywgZmluZS1ncmFpbmVkIGFjY2VzcyBjb250cm9sLCBhbmQgYSBtYW5hZ2VkIFNMQS4gT24gYSBzZWxmLWhvc3RlZCBMdWNlbmlhIGNsdXN0ZXIgeW91IG93biB0aGUgbm9kZSBwb29scyBhbmQgcmVwbGljYXMsIHNuYXBzaG90cyBhbmQgdmVyc2lvbiB1cGdyYWRlcywgYW5kIHRoZSBMdWNlbmlhIHNlY3VyaXR5IGNvbmZpZ3VyYXRpb24sIHdpdGggbm8gcHJvdmlkZXIgYXZhaWxhYmlsaXR5IFNMQS4iPjxzdHlsZT50ZXh0e2ZvbnQtZmFtaWx5OkludGVyLC1hcHBsZS1zeXN0ZW0sQmxpbmtNYWNTeXN0ZW1Gb250LCdTZWdvZSBVSScsUm9ib3RvLCdIZWx2ZXRpY2EgTmV1ZScsQXJpYWwsc2Fucy1zZXJpZjtmaWxsOiMzMzQxNTV9PC9zdHlsZT4KPGRlZnM+PG1hcmtlciBpZD0ibHVjNC1hIiB2aWV3Qm94PSIwIDAgMTAgMTAiIHJlZlg9IjgiIHJlZlk9IjUiIG1hcmtlcldpZHRoPSI2LjUiIG1hcmtlckhlaWdodD0iNi41IiBvcmllbnQ9ImF1dG8tc3RhcnQtcmV2ZXJzZSI+PHBhdGggZD0iTTAsMCBMMTAsNSBMMCwxMCB6IiBmaWxsPSIjOTRhM2I4Ii8+PC9tYXJrZXI+PC9kZWZzPgo8dGV4dCB4PSI0MCIgeT0iMjYiIHN0eWxlPSJmb250OiA3MDAgMTBweCBJbnRlciwgc2Fucy1zZXJpZjsgbGV0dGVyLXNwYWNpbmc6IDEuM3B4OyBmaWxsOiAjOTRhM2I4Ij5PTiBUSEUgQVdTIERPTUFJTjwvdGV4dD4KPHRleHQgeD0iNDcwIiB5PSIyNiIgc3R5bGU9ImZvbnQ6IDcwMCAxMHB4IEludGVyLCBzYW5zLXNlcmlmOyBsZXR0ZXItc3BhY2luZzogMS4zcHg7IGZpbGw6ICM5NGEzYjg7IGZpbGw6IzA0Nzg1NyI+T04gWU9VUiBMVUNFTklBIENMVVNURVI8L3RleHQ+CjxyZWN0IHg9IjQwIiB5PSIzOCIgd2lkdGg9IjM2MCIgaGVpZ2h0PSIxMjgiIHJ4PSIxMiIgZmlsbD0iI2Y4ZmFmYyIgc3Ryb2tlPSIjY2JkNWUxIiBzdHJva2Utd2lkdGg9IjEuNCIvPgo8dGV4dCB4PSI1OCIgeT0iNjYiIHN0eWxlPSJmb250OiA2NTAgMTMuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjMGYxNzJhOyBmb250LXNpemU6MTIuNXB4Ij5BV1Mgb3BlcmF0ZWQgaXQ8L3RleHQ+Cjx0ZXh0IHg9IjU4IiB5PSI5MiIgc3R5bGU9ImZvbnQ6IDExcHggJ1NGIE1vbm8nLCB1aS1tb25vc3BhY2UsICdKZXRCcmFpbnMgTW9ubycsIE1lbmxvLCBtb25vc3BhY2U7IGZpbGw6ICM0NzU1NjkiPmhpZ2ggYXZhaWxhYmlsaXR5IMK3IHZlcnNpb24gdXBncmFkZXM8L3RleHQ+Cjx0ZXh0IHg9IjU4IiB5PSIxMTYiIHN0eWxlPSJmb250OiAxMXB4ICdTRiBNb25vJywgdWktbW9ub3NwYWNlLCAnSmV0QnJhaW5zIE1vbm8nLCBNZW5sbywgbW9ub3NwYWNlOyBmaWxsOiAjNDc1NTY5Ij5tYW5hZ2VkIGRhaWx5IHNuYXBzaG90czwvdGV4dD4KPHRleHQgeD0iNTgiIHk9IjE0MCIgc3R5bGU9ImZvbnQ6IDExcHggJ1NGIE1vbm8nLCB1aS1tb25vc3BhY2UsICdKZXRCcmFpbnMgTW9ubycsIE1lbmxvLCBtb25vc3BhY2U7IGZpbGw6ICM0NzU1NjkiPmZpbmUtZ3JhaW5lZCBhY2Nlc3MgY29udHJvbCDCtyBTTEE8L3RleHQ+CjxsaW5lIHgxPSI0MDQiIHkxPSIxMDIiIHgyPSI0NTIiIHkyPSIxMDIiIHN0cm9rZT0iIzk0YTNiOCIgc3Ryb2tlLXdpZHRoPSIyIiBtYXJrZXItZW5kPSJ1cmwoI2x1YzQtYSkiLz4KPHJlY3QgeD0iNDU2IiB5PSIzOCIgd2lkdGg9IjM0MCIgaGVpZ2h0PSIxMjgiIHJ4PSIxMiIgZmlsbD0iI2VjZmRmNSIgc3Ryb2tlPSIjMDU5NjY5IiBzdHJva2Utd2lkdGg9IjEuNyIvPgo8dGV4dCB4PSI0NzQiIHk9IjY2IiBzdHlsZT0iZm9udDogNzAwIDEzLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzA0Nzg1NzsgZm9udC1zaXplOjEyLjVweCI+WW91IG9wZXJhdGUgaXQgb24gS3ViZXJuZXRlczwvdGV4dD4KPHRleHQgeD0iNDc0IiB5PSI5MiIgc3R5bGU9ImZvbnQ6IDEwLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzA0Nzg1NyI+bm9kZVBvb2xzIChkYXRhICsgbWFzdGVyKSDCtyByZXBsaWNhcyB5b3Ugc2V0PC90ZXh0Pgo8dGV4dCB4PSI0NzQiIHk9IjExNiIgc3R5bGU9ImZvbnQ6IDEwLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzA0Nzg1NyI+c2VsZi1tYW5hZ2VkIHNuYXBzaG90cyDCtyB2ZXJzaW9uIHVwZ3JhZGVzPC90ZXh0Pgo8dGV4dCB4PSI0NzQiIHk9IjE0MCIgc3R5bGU9ImZvbnQ6IDYwMCAxMXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjYjQ1MzA5OyBmb250LXNpemU6MTAuNXB4Ij5MdWNlbmlhIHNlY3VyaXR5IMK3IG5vIHByb3ZpZGVyIFNMQTwvdGV4dD4KPC9zdmc+" alt="On the AWS domain AWS ran high availability, version upgrades, managed daily snapshots, fine-grained access control, and a managed SLA. On a self-hosted Lucenia cluster you own the node pools and replicas, snapshots and version upgrades, and the Lucenia security configuration, with no provider availability SLA." />

  <img className="t9-diagram-dark" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4MzYiIGhlaWdodD0iMTg0IiB2aWV3Qm94PSIwIDAgODM2IDE4NCIgcm9sZT0iaW1nIiBhcmlhLWxhYmVsPSJPbiB0aGUgQVdTIGRvbWFpbiBBV1MgcmFuIGhpZ2ggYXZhaWxhYmlsaXR5LCB2ZXJzaW9uIHVwZ3JhZGVzLCBtYW5hZ2VkIGRhaWx5IHNuYXBzaG90cywgZmluZS1ncmFpbmVkIGFjY2VzcyBjb250cm9sLCBhbmQgYSBtYW5hZ2VkIFNMQS4gT24gYSBzZWxmLWhvc3RlZCBMdWNlbmlhIGNsdXN0ZXIgeW91IG93biB0aGUgbm9kZSBwb29scyBhbmQgcmVwbGljYXMsIHNuYXBzaG90cyBhbmQgdmVyc2lvbiB1cGdyYWRlcywgYW5kIHRoZSBMdWNlbmlhIHNlY3VyaXR5IGNvbmZpZ3VyYXRpb24sIHdpdGggbm8gcHJvdmlkZXIgYXZhaWxhYmlsaXR5IFNMQS4iPjxzdHlsZT50ZXh0e2ZvbnQtZmFtaWx5OkludGVyLC1hcHBsZS1zeXN0ZW0sQmxpbmtNYWNTeXN0ZW1Gb250LCdTZWdvZSBVSScsUm9ib3RvLCdIZWx2ZXRpY2EgTmV1ZScsQXJpYWwsc2Fucy1zZXJpZjtmaWxsOiNjYmQ1ZTF9PC9zdHlsZT4KPGRlZnM+PG1hcmtlciBpZD0ibHVjNC1hIiB2aWV3Qm94PSIwIDAgMTAgMTAiIHJlZlg9IjgiIHJlZlk9IjUiIG1hcmtlcldpZHRoPSI2LjUiIG1hcmtlckhlaWdodD0iNi41IiBvcmllbnQ9ImF1dG8tc3RhcnQtcmV2ZXJzZSI+PHBhdGggZD0iTTAsMCBMMTAsNSBMMCwxMCB6IiBmaWxsPSIjOTRhM2I4Ii8+PC9tYXJrZXI+PC9kZWZzPgo8dGV4dCB4PSI0MCIgeT0iMjYiIHN0eWxlPSJmb250OiA3MDAgMTBweCBJbnRlciwgc2Fucy1zZXJpZjsgbGV0dGVyLXNwYWNpbmc6IDEuM3B4OyBmaWxsOiAjOTRhM2I4Ij5PTiBUSEUgQVdTIERPTUFJTjwvdGV4dD4KPHRleHQgeD0iNDcwIiB5PSIyNiIgc3R5bGU9ImZvbnQ6IDcwMCAxMHB4IEludGVyLCBzYW5zLXNlcmlmOyBsZXR0ZXItc3BhY2luZzogMS4zcHg7IGZpbGw6ICM5NGEzYjg7IGZpbGw6ICM5MGRlYzgiPk9OIFlPVVIgTFVDRU5JQSBDTFVTVEVSPC90ZXh0Pgo8cmVjdCB4PSI0MCIgeT0iMzgiIHdpZHRoPSIzNjAiIGhlaWdodD0iMTI4IiByeD0iMTIiIGZpbGw9IiMxYTI2MzEiIHN0cm9rZT0iIzNkNGY2NiIgc3Ryb2tlLXdpZHRoPSIxLjQiLz4KPHRleHQgeD0iNTgiIHk9IjY2IiBzdHlsZT0iZm9udDogNjUwIDEzLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogI2M5Y2VkODsgZm9udC1zaXplOjEyLjVweCI+QVdTIG9wZXJhdGVkIGl0PC90ZXh0Pgo8dGV4dCB4PSI1OCIgeT0iOTIiIHN0eWxlPSJmb250OiAxMXB4ICdTRiBNb25vJywgdWktbW9ub3NwYWNlLCAnSmV0QnJhaW5zIE1vbm8nLCBNZW5sbywgbW9ub3NwYWNlOyBmaWxsOiAjYzljZmQ4Ij5oaWdoIGF2YWlsYWJpbGl0eSDCtyB2ZXJzaW9uIHVwZ3JhZGVzPC90ZXh0Pgo8dGV4dCB4PSI1OCIgeT0iMTE2IiBzdHlsZT0iZm9udDogMTFweCAnU0YgTW9ubycsIHVpLW1vbm9zcGFjZSwgJ0pldEJyYWlucyBNb25vJywgTWVubG8sIG1vbm9zcGFjZTsgZmlsbDogI2M5Y2ZkOCI+bWFuYWdlZCBkYWlseSBzbmFwc2hvdHM8L3RleHQ+Cjx0ZXh0IHg9IjU4IiB5PSIxNDAiIHN0eWxlPSJmb250OiAxMXB4ICdTRiBNb25vJywgdWktbW9ub3NwYWNlLCAnSmV0QnJhaW5zIE1vbm8nLCBNZW5sbywgbW9ub3NwYWNlOyBmaWxsOiAjYzljZmQ4Ij5maW5lLWdyYWluZWQgYWNjZXNzIGNvbnRyb2wgwrcgU0xBPC90ZXh0Pgo8bGluZSB4MT0iNDA0IiB5MT0iMTAyIiB4Mj0iNDUyIiB5Mj0iMTAyIiBzdHJva2U9IiM0MTRlNjIiIHN0cm9rZS13aWR0aD0iMiIgbWFya2VyLWVuZD0idXJsKCNsdWM0LWEpIi8+CjxyZWN0IHg9IjQ1NiIgeT0iMzgiIHdpZHRoPSIzNDAiIGhlaWdodD0iMTI4IiByeD0iMTIiIGZpbGw9IiMxYTMxMjYiIHN0cm9rZT0iIzA1OTY2OSIgc3Ryb2tlLXdpZHRoPSIxLjciLz4KPHRleHQgeD0iNDc0IiB5PSI2NiIgc3R5bGU9ImZvbnQ6IDcwMCAxMy41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICM5MGRlYzg7IGZvbnQtc2l6ZToxMi41cHgiPllvdSBvcGVyYXRlIGl0IG9uIEt1YmVybmV0ZXM8L3RleHQ+Cjx0ZXh0IHg9IjQ3NCIgeT0iOTIiIHN0eWxlPSJmb250OiAxMC41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICM5MGRlYzgiPm5vZGVQb29scyAoZGF0YSArIG1hc3RlcikgwrcgcmVwbGljYXMgeW91IHNldDwvdGV4dD4KPHRleHQgeD0iNDc0IiB5PSIxMTYiIHN0eWxlPSJmb250OiAxMC41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICM5MGRlYzgiPnNlbGYtbWFuYWdlZCBzbmFwc2hvdHMgwrcgdmVyc2lvbiB1cGdyYWRlczwvdGV4dD4KPHRleHQgeD0iNDc0IiB5PSIxNDAiIHN0eWxlPSJmb250OiA2MDAgMTFweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogI2RlYjI5MDsgZm9udC1zaXplOjEwLjVweCI+THVjZW5pYSBzZWN1cml0eSDCtyBubyBwcm92aWRlciBTTEE8L3RleHQ+Cjwvc3ZnPg==" alt="On the AWS domain AWS ran high availability, version upgrades, managed daily snapshots, fine-grained access control, and a managed SLA. On a self-hosted Lucenia cluster you own the node pools and replicas, snapshots and version upgrades, and the Lucenia security configuration, with no provider availability SLA." />
</div>

<p className="t9-caption">The AWS-managed features and the managed SLA become your responsibility: you operate the Lucenia cluster on Kubernetes, and there is no provider availability SLA.</p>

#### Limitations

Existing clients use Lucenia's compatible REST API. Review the unverified plugins, early release status, and absence of a provider availability guarantee before choosing this target.

△ Where an AWS OpenSearch domain and self-hosted Lucenia diverge

* **A different engine, not the OpenSearch codebase.** Lucenia is an OpenSearch-2.14-derived fork on Apache Lucene 10.4, not the OpenSearch engine the domain runs. The REST compatibility is what your clients rely on, but this is a distinct project with its own release cadence and its own defects.
* **`_plugins/*` beyond k-NN is unverified.** SQL, PPL, ISM, Alerting, Anomaly Detection, and ML Commons have no published parity matrix on Lucenia. Confirm each API your app calls before cutover; do not assume domain-level plugin behavior.
* **Early-stage 0.x maturity.** Lucenia is at `0.11.1`, a young project. Ecosystem tooling, client testing against it, long-term support commitments, and upgrade stability are all less established than a generally-available managed service; weigh that against the workload's risk tolerance.
* **No availability SLA:** this deployment target is self-operated on Kubernetes, so no provider guarantees uptime. (A separate managed Lucenia Cloud exists, but it is not this self-hosted target.)
* **Managed domain features become yours:** daily snapshots, fine-grained access control, and specific instance families and EBS ceilings are not inherited from AWS; Lucenia is sized in your own node pools and storage (`persistence.size`, `storageClass`) and secured through its own model.
* **The cluster starts empty:** indices are not auto-migrated; restore from a snapshot or reindex from the source before traffic cuts over.
* **SSPL is part of the license.** Lucenia is dual-licensed Apache-2.0 and SSPL; the SSPL terms matter if you would ever offer it as a service to third parties, so review the license against your intended use.

#### Other considerations

Plan data migration, operations, and version testing before switching traffic to Lucenia.

## On DigitalOcean and Google Cloud

### Elastic Cloud (managed)

| Operation                                                                            | Area               | Support        | Depth        | Notes                                                                                                                                          |
| ------------------------------------------------------------------------------------ | ------------------ | -------------- | ------------ | ---------------------------------------------------------------------------------------------------------------------------------------------- |
| Cluster health / stats / \_cat APIs                                                  | Cluster            | Supported      | Most usage   | -                                                                                                                                              |
| Tasks API (\_tasks)                                                                  | Cluster            | Supported      | Full surface | drives async reindex / update-by-query                                                                                                         |
| Bulk (\_bulk)                                                                        | Documents          | Supported      | Common       | batch index/update/delete                                                                                                                      |
| Delete document                                                                      | Documents          | Supported      | Common       | -                                                                                                                                              |
| Get document (GET /\{index}/\_doc/\{id})                                             | Documents          | Supported      | Common       | -                                                                                                                                              |
| Index document (PUT/POST /\{index}/\_doc)                                            | Documents          | Supported      | Common       | -                                                                                                                                              |
| Multi-get (\_mget)                                                                   | Documents          | Supported      | Most usage   | -                                                                                                                                              |
| Update document (\_update)                                                           | Documents          | Supported      | Common       | -                                                                                                                                              |
| Snapshots / backups (\_snapshot)                                                     | Durability         | Partial        | Full surface | Elastic SLM - a different API                                                                                                                  |
| Aliases (\_aliases)                                                                  | Index management   | Supported      | Most usage   | -                                                                                                                                              |
| Analyze (\_analyze)                                                                  | Index management   | Supported      | Full surface | tokenizer/analyzer testing                                                                                                                     |
| Create / Delete / Get index                                                          | Index management   | Supported      | Common       | -                                                                                                                                              |
| Data streams (\_data\_stream)                                                        | Index management   | Supported      | Full surface | -                                                                                                                                              |
| Open / Close index                                                                   | Index management   | Supported      | Full surface | -                                                                                                                                              |
| Put / Get mapping                                                                    | Index management   | Supported      | Common       | -                                                                                                                                              |
| Refresh / Flush / Forcemerge                                                         | Index management   | Supported      | Most usage   | -                                                                                                                                              |
| Rollover / Shrink / Split / Clone                                                    | Index management   | Supported      | Full surface | -                                                                                                                                              |
| Update / Get settings                                                                | Index management   | Supported      | Most usage   | -                                                                                                                                              |
| Index & component templates (\_index\_template / \_component\_template)              | Ingest & templates | Supported      | Full surface | -                                                                                                                                              |
| Ingest pipelines (\_ingest/pipeline: put / get / delete / \_simulate)                | Ingest & templates | Supported      | Full surface | -                                                                                                                                              |
| License / X-Pack (\_license, \_xpack)                                                | Licensing          | Out of scope   | Full surface | Elasticsearch licensing endpoints are outside the OpenSearch mapping.                                                                          |
| Index State Management (\_plugins/\_ism)                                             | Lifecycle          | Adapter-served | Full surface | Maps representable ISM actions to ILM phases; custom states and transitions cannot round-trip.                                                 |
| Alerting / anomaly detection / ML Commons (\_plugins/\*)                             | Observability & ML | Adapter-served | Full surface | ES-native \_ml/\_watcher, several Platinum-gated; notifications/observability have no ES REST equivalent                                       |
| Notifications / observability (\_plugins/\_notifications, \_plugins/\_observability) | Observability & ML | Out of scope   | Full surface | These OpenSearch APIs are outside the Elasticsearch mapping; use target-native configuration or change the application.                        |
| PPL (\_plugins/\_ppl)                                                                | Query languages    | Out of scope   | Full surface | no PPL in Elasticsearch; ES\|QL is a different language                                                                                        |
| SQL (\_plugins/\_sql)                                                                | Query languages    | Adapter-served | Full surface | ES \_sql at a different path/shape                                                                                                             |
| Stored scripts & Painless (\_scripts, \_scripts/painless/\_execute)                  | Scripting          | Supported      | Full surface | -                                                                                                                                              |
| Aggregations                                                                         | Search             | Supported      | Common       | metrics + bucket aggregations in \_search                                                                                                      |
| Count / Explain / Suggest                                                            | Search             | Supported      | Most usage   | -                                                                                                                                              |
| Field capabilities (\_field\_caps)                                                   | Search             | Supported      | Full surface | -                                                                                                                                              |
| Multi-search (\_msearch)                                                             | Search             | Supported      | Most usage   | -                                                                                                                                              |
| Point-in-time (\_search/point\_in\_time)                                             | Search             | Partial        | Most usage   | ES uses \_pit, not \_search/point\_in\_time - path rewrite                                                                                     |
| Reindex / Update-by-query / Delete-by-query                                          | Search             | Supported      | Full surface | -                                                                                                                                              |
| Scroll (\_search/scroll)                                                             | Search             | Supported      | Most usage   | deep pagination                                                                                                                                |
| Search (\_search + query DSL)                                                        | Search             | Supported      | Common       | -                                                                                                                                              |
| Search templates (\_search/template, \_render/template)                              | Search             | Supported      | Full surface | -                                                                                                                                              |
| Term vectors (\_termvectors / \_mtermvectors)                                        | Search             | Supported      | Full surface | -                                                                                                                                              |
| Security plugin / fine-grained access control (\_plugins/\_security)                 | Security           | Out of scope   | Full surface | disjoint API + model - \_security/\* vs \_plugins/\_security/\*; some OpenSearch-free FLS/DLS/multi-tenancy are Platinum-gated or absent on ES |
| Vector search / k-NN (knn\_vector, \_plugins/\_knn)                                  | Vector & ML        | Adapter-served | Full surface | rewrite knn\_vector→dense\_vector, OpenSearch knn query→ES knn option                                                                          |

#### OpenSearch requests on Elasticsearch

Elastic Cloud Hosted runs Elasticsearch 8.x. The Tensor9 adapter accepts the application's OpenSearch requests, translates supported APIs and authentication, and sends them to the managed Elasticsearch endpoint. Tensor9 provisions an ec\_deployment in the customer's Google Cloud environment. Elastic operates Elasticsearch and Kibana; the customer selects the deployment configuration.

<div className="t9-diagram-scroll" role="region" aria-label="Scrollable diagram" tabIndex={0}>
  <img className="t9-diagram-light" src="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iOTAwIiBoZWlnaHQ9IjE4MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgOTAwIDE4MCIgcm9sZT0iaW1nIiBhcmlhLWxhYmVsPSJBcHBsaWNhdGlvbiByZXF1ZXN0cyByZWFjaCBFbGFzdGljIENsb3VkIEhvc3RlZCB0aHJvdWdoIHRoZSBUZW5zb3I5IHRyYW5zbGF0aW5nIGFkYXB0ZXIuIFRoZSBhZGFwdGVyIHRyYW5zbGF0ZXMgYXV0aGVudGljYXRpb24gYW5kIHN1cHBvcnRlZCBBUElzLiI+PHN0eWxlPnRleHR7Zm9udC1mYW1pbHk6SW50ZXIsLWFwcGxlLXN5c3RlbSxCbGlua01hY1N5c3RlbUZvbnQsJ1NlZ29lIFVJJyxSb2JvdG8sJ0hlbHZldGljYSBOZXVlJyxBcmlhbCxzYW5zLXNlcmlmO2ZpbGw6IzMzNDE1NX08L3N0eWxlPgo8ZGVmcz48bWFya2VyIGlkPSJvcy1yb3V0ZSIgbWFya2VyV2lkdGg9IjgiIG1hcmtlckhlaWdodD0iOCIgcmVmWD0iNyIgcmVmWT0iNCIgb3JpZW50PSJhdXRvIj48cGF0aCBkPSJNMCwwIEw4LDQgTDAsOCBaIiBmaWxsPSIjNjQ3NDhiIi8+PC9tYXJrZXI+PC9kZWZzPgo8ZyBzdHJva2U9IiM5NGEzYjgiPjxyZWN0IGZpbGw9IiNmOGZhZmMiIHg9IjIwIiB5PSI0MCIgd2lkdGg9IjI0MCIgaGVpZ2h0PSIxMDAiIHJ4PSIxMCIvPjxyZWN0IGZpbGw9IiNmOGZhZmMiIHg9IjMzMCIgeT0iNDAiIHdpZHRoPSIyNDAiIGhlaWdodD0iMTAwIiByeD0iMTAiLz48cmVjdCBmaWxsPSIjZjhmYWZjIiB4PSI2NDAiIHk9IjQwIiB3aWR0aD0iMjQwIiBoZWlnaHQ9IjEwMCIgcng9IjEwIi8+PC9nPgo8ZyBmb250LWZhbWlseT0ic3lzdGVtLXVpLHNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTciIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZpbGw9IiMwZjE3MmEiPjx0ZXh0IHg9IjE0MCIgeT0iNzgiPkFwcGxpY2F0aW9uPC90ZXh0Pjx0ZXh0IHg9IjQ1MCIgeT0iNzgiPlRlbnNvcjkgYWRhcHRlcjwvdGV4dD48dGV4dCB4PSI3NjAiIHk9Ijc4Ij5FbGFzdGljIENsb3VkIEhvc3RlZDwvdGV4dD48L2c+CjxnIGZvbnQtZmFtaWx5PSJzeXN0ZW0tdWksc2Fucy1zZXJpZiIgZm9udC1zaXplPSIxNCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZmlsbD0iIzQ3NTU2OSI+PHRleHQgeD0iMTQwIiB5PSIxMDgiPk9wZW5TZWFyY2ggY2xpZW50PC90ZXh0Pjx0ZXh0IHg9IjQ1MCIgeT0iMTA4Ij5UcmFuc2xhdGUgQVBJIGFuZCBjcmVkZW50aWFsczwvdGV4dD48dGV4dCB4PSI3NjAiIHk9IjEwOCI+SW5kZXhlcyBhbmQgc2VhcmNoPC90ZXh0PjwvZz4KPGcgc3Ryb2tlPSIjNjQ3NDhiIiBzdHJva2Utd2lkdGg9IjIiIG1hcmtlci1lbmQ9InVybCgjb3Mtcm91dGUpIj48cGF0aCBkPSJNMjYwIDkwIEgzMjUiLz48cGF0aCBkPSJNNTcwIDkwIEg2MzUiLz48L2c+Cjwvc3ZnPg==" alt="Application requests reach Elastic Cloud Hosted through the Tensor9 translating adapter. The adapter translates authentication and supported APIs." />

  <img className="t9-diagram-dark" src="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iOTAwIiBoZWlnaHQ9IjE4MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgOTAwIDE4MCIgcm9sZT0iaW1nIiBhcmlhLWxhYmVsPSJBcHBsaWNhdGlvbiByZXF1ZXN0cyByZWFjaCBFbGFzdGljIENsb3VkIEhvc3RlZCB0aHJvdWdoIHRoZSBUZW5zb3I5IHRyYW5zbGF0aW5nIGFkYXB0ZXIuIFRoZSBhZGFwdGVyIHRyYW5zbGF0ZXMgYXV0aGVudGljYXRpb24gYW5kIHN1cHBvcnRlZCBBUElzLiI+PHN0eWxlPnRleHR7Zm9udC1mYW1pbHk6SW50ZXIsLWFwcGxlLXN5c3RlbSxCbGlua01hY1N5c3RlbUZvbnQsJ1NlZ29lIFVJJyxSb2JvdG8sJ0hlbHZldGljYSBOZXVlJyxBcmlhbCxzYW5zLXNlcmlmO2ZpbGw6I2NiZDVlMX08L3N0eWxlPgo8ZGVmcz48bWFya2VyIGlkPSJvcy1yb3V0ZSIgbWFya2VyV2lkdGg9IjgiIG1hcmtlckhlaWdodD0iOCIgcmVmWD0iNyIgcmVmWT0iNCIgb3JpZW50PSJhdXRvIj48cGF0aCBkPSJNMCwwIEw4LDQgTDAsOCBaIiBmaWxsPSIjNjQ3NDhiIi8+PC9tYXJrZXI+PC9kZWZzPgo8ZyBzdHJva2U9IiM0MTRlNjIiPjxyZWN0IGZpbGw9IiMxYTI2MzEiIHg9IjIwIiB5PSI0MCIgd2lkdGg9IjI0MCIgaGVpZ2h0PSIxMDAiIHJ4PSIxMCIvPjxyZWN0IGZpbGw9IiMxYTI2MzEiIHg9IjMzMCIgeT0iNDAiIHdpZHRoPSIyNDAiIGhlaWdodD0iMTAwIiByeD0iMTAiLz48cmVjdCBmaWxsPSIjMWEyNjMxIiB4PSI2NDAiIHk9IjQwIiB3aWR0aD0iMjQwIiBoZWlnaHQ9IjEwMCIgcng9IjEwIi8+PC9nPgo8ZyBmb250LWZhbWlseT0ic3lzdGVtLXVpLHNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTciIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZpbGw9IiM1NTc2YzIiPjx0ZXh0IHg9IjE0MCIgeT0iNzgiPkFwcGxpY2F0aW9uPC90ZXh0Pjx0ZXh0IHg9IjQ1MCIgeT0iNzgiPlRlbnNvcjkgYWRhcHRlcjwvdGV4dD48dGV4dCB4PSI3NjAiIHk9Ijc4Ij5FbGFzdGljIENsb3VkIEhvc3RlZDwvdGV4dD48L2c+CjxnIGZvbnQtZmFtaWx5PSJzeXN0ZW0tdWksc2Fucy1zZXJpZiIgZm9udC1zaXplPSIxNCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZmlsbD0iIzc2ODhhMiI+PHRleHQgeD0iMTQwIiB5PSIxMDgiPk9wZW5TZWFyY2ggY2xpZW50PC90ZXh0Pjx0ZXh0IHg9IjQ1MCIgeT0iMTA4Ij5UcmFuc2xhdGUgQVBJIGFuZCBjcmVkZW50aWFsczwvdGV4dD48dGV4dCB4PSI3NjAiIHk9IjEwOCI+SW5kZXhlcyBhbmQgc2VhcmNoPC90ZXh0PjwvZz4KPGcgc3Ryb2tlPSIjNjQ3NDhiIiBzdHJva2Utd2lkdGg9IjIiIG1hcmtlci1lbmQ9InVybCgjb3Mtcm91dGUpIj48cGF0aCBkPSJNMjYwIDkwIEgzMjUiLz48cGF0aCBkPSJNNTcwIDkwIEg2MzUiLz48L2c+Cjwvc3ZnPg==" alt="Application requests reach Elastic Cloud Hosted through the Tensor9 translating adapter. The adapter translates authentication and supported APIs." />
</div>

#### Core requests and authentication

The adapter forwards the supported document, search, aggregation, index, cluster, ingest and scripting operations. It translates request and response differences, including the point-in-time path from \_search/point\_in\_time to \_pit. AWS SigV4 authentication is checked by the adapter; target requests use Elastic credentials or API keys. Configure target permissions in Elastic's security model.

Elasticsearch 8.x provides compatible-with=7 headers for its earlier REST API contract. The adapter uses that facility where applicable, alongside the required translations. It does not make every OpenSearch request or client version compatible. Validate the application's queries, response parsing and client behavior against the listed operations. See [Elastic's API compatibility documentation](https://www.elastic.co/docs/reference/elasticsearch/rest-apis/compatibility).

#### Plugin translations

OpenSearch and Elasticsearch use different plugin APIs. The mapping translates k-NN vector mappings from knn\_vector to dense\_vector and converts the query to Elasticsearch's knn form. SQL requests move from \_plugins/\_sql to \_sql with translated response fields. Index State Management policies map to Elasticsearch Index Lifecycle Management where their actions can be represented. Custom ISM states and transitions do not round-trip through ILM's fixed phases.

The described alerting, anomaly-detection and machine-learning mappings use Elasticsearch \_watcher and \_ml capabilities. Some need a paid Elastic subscription. The operation table separates those translations from excluded APIs: PPL, the OpenSearch Security API, notifications and observability objects remain outside the mapping. Elasticsearch \_license and \_xpack are not OpenSearch APIs.

#### Deployment and availability

The ec\_deployment resource exposes hot, warm, cold and frozen tiers, instance size, one to three availability zones, and per-tier autoscaling. Storage is bundled at the selected tier's disk-to-memory ratio. The subscription determines commercial features and the applicable availability commitment. Elastic Cloud publishes monthly availability commitments of 99.5%, 99.9% and 99.95% for one-, two- and three-zone deployments, subject to the subscription and high-availability conditions. Choose topology and subscription together.

The target uses Elastic security configuration, API keys and single sign-on rather than OpenSearch Security roles. Document- and field-level security and other commercial features depend on the purchased subscription. The hosted offering's subscription conditions apply regardless of the source-code license. Elastic added an AGPLv3 option for the free source portions in 2024; see its [licensing FAQ](https://www.elastic.co/pricing/faq/licensing/).

#### Snapshots and migration

The deployment starts empty. Move data with a compatible remote reindex or bulk export/import workflow; do not assume an OpenSearch snapshot restores across the engine fork. Review mappings, analyzers and index settings before loading data, and verify representative queries before switching traffic.

Elastic Snapshot Lifecycle Management controls target backup schedules and retention. Preserve the application's recovery requirements when replacing AWS-managed snapshots. The adapter does not translate OpenSearch Security configuration, PPL or notification/observability objects; these need target-native configuration or an application change.

#### Sizing and performance

Choose shard layout, replicas, data tiers and memory for the application's indexing and query workload. Published engine benchmarks describe their particular versions and datasets; they do not measure this adaptation. Measure the deployed application, including translated operations, when selecting capacity.

## On OCI

### OCI Search with OpenSearch

| Operation                                                                            | Area               | Support      | Depth        | Notes                                                                                                                                                                                                        |
| ------------------------------------------------------------------------------------ | ------------------ | ------------ | ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Cluster health / stats / \_cat APIs                                                  | Cluster            | Supported    | Most usage   | -                                                                                                                                                                                                            |
| Tasks API (\_tasks)                                                                  | Cluster            | Supported    | Full surface | drives async reindex / update-by-query                                                                                                                                                                       |
| Bulk (\_bulk)                                                                        | Documents          | Supported    | Common       | batch index/update/delete                                                                                                                                                                                    |
| Delete document                                                                      | Documents          | Supported    | Common       | -                                                                                                                                                                                                            |
| Get document (GET /\{index}/\_doc/\{id})                                             | Documents          | Supported    | Common       | -                                                                                                                                                                                                            |
| Index document (PUT/POST /\{index}/\_doc)                                            | Documents          | Supported    | Common       | -                                                                                                                                                                                                            |
| Multi-get (\_mget)                                                                   | Documents          | Supported    | Most usage   | -                                                                                                                                                                                                            |
| Update document (\_update)                                                           | Documents          | Supported    | Common       | -                                                                                                                                                                                                            |
| Snapshots / backups (\_snapshot)                                                     | Durability         | Partial      | Full surface | managed daily backups (14-day retention, non-configurable) + the manual \_snapshot API to an Object Storage bucket in your tenancy - a different model from AWS managed snapshots                            |
| Aliases (\_aliases)                                                                  | Index management   | Supported    | Most usage   | -                                                                                                                                                                                                            |
| Analyze (\_analyze)                                                                  | Index management   | Supported    | Full surface | tokenizer/analyzer testing                                                                                                                                                                                   |
| Create / Delete / Get index                                                          | Index management   | Supported    | Common       | -                                                                                                                                                                                                            |
| Data streams (\_data\_stream)                                                        | Index management   | Supported    | Full surface | -                                                                                                                                                                                                            |
| Open / Close index                                                                   | Index management   | Supported    | Full surface | -                                                                                                                                                                                                            |
| Put / Get mapping                                                                    | Index management   | Supported    | Common       | -                                                                                                                                                                                                            |
| Refresh / Flush / Forcemerge                                                         | Index management   | Supported    | Most usage   | -                                                                                                                                                                                                            |
| Rollover / Shrink / Split / Clone                                                    | Index management   | Supported    | Full surface | -                                                                                                                                                                                                            |
| Update / Get settings                                                                | Index management   | Supported    | Most usage   | -                                                                                                                                                                                                            |
| Index & component templates (\_index\_template / \_component\_template)              | Ingest & templates | Supported    | Full surface | -                                                                                                                                                                                                            |
| Ingest pipelines (\_ingest/pipeline: put / get / delete / \_simulate)                | Ingest & templates | Supported    | Full surface | -                                                                                                                                                                                                            |
| License / X-Pack (\_license, \_xpack)                                                | Licensing          | Out of scope | Full surface | Elasticsearch licensing endpoints \_license and \_xpack are not OpenSearch APIs.                                                                                                                             |
| Index State Management (\_plugins/\_ism)                                             | Lifecycle          | Supported    | Full surface | Index Management (ISM) is a supported OCI Search plugin                                                                                                                                                      |
| Alerting / anomaly detection / ML Commons (\_plugins/\*)                             | Observability & ML | Supported    | Full surface | Alerting, Anomaly Detection, ML Commons, Neural Search, Notifications, Observability, Security Analytics are all supported OCI Search plugins                                                                |
| Notifications / observability (\_plugins/\_notifications, \_plugins/\_observability) | Observability & ML | Supported    | Full surface | Alerting, Anomaly Detection, ML Commons, Neural Search, Notifications, Observability, Security Analytics are all supported OCI Search plugins                                                                |
| PPL (\_plugins/\_ppl)                                                                | Query languages    | Supported    | Full surface | PPL ships with the supported SQL plugin                                                                                                                                                                      |
| SQL (\_plugins/\_sql)                                                                | Query languages    | Supported    | Full surface | the SQL plugin is supported on OCI Search                                                                                                                                                                    |
| Stored scripts & Painless (\_scripts, \_scripts/painless/\_execute)                  | Scripting          | Supported    | Full surface | -                                                                                                                                                                                                            |
| Aggregations                                                                         | Search             | Supported    | Common       | metrics + bucket aggregations in \_search                                                                                                                                                                    |
| Count / Explain / Suggest                                                            | Search             | Supported    | Most usage   | -                                                                                                                                                                                                            |
| Field capabilities (\_field\_caps)                                                   | Search             | Supported    | Full surface | -                                                                                                                                                                                                            |
| Multi-search (\_msearch)                                                             | Search             | Supported    | Most usage   | -                                                                                                                                                                                                            |
| Point-in-time (\_search/point\_in\_time)                                             | Search             | Supported    | Most usage   | native - OpenSearch engine                                                                                                                                                                                   |
| Reindex / Update-by-query / Delete-by-query                                          | Search             | Supported    | Full surface | -                                                                                                                                                                                                            |
| Scroll (\_search/scroll)                                                             | Search             | Supported    | Most usage   | deep pagination                                                                                                                                                                                              |
| Search (\_search + query DSL)                                                        | Search             | Supported    | Common       | -                                                                                                                                                                                                            |
| Search templates (\_search/template, \_render/template)                              | Search             | Supported    | Full surface | -                                                                                                                                                                                                            |
| Term vectors (\_termvectors / \_mtermvectors)                                        | Search             | Supported    | Full surface | -                                                                                                                                                                                                            |
| Security plugin / fine-grained access control (\_plugins/\_security)                 | Security           | Partial      | Full surface | the OpenSearch Security plugin runs (RBAC, SAML/LDAP/OIDC, DLS/FLS), but AWS FGAC's IAM/master-user model is re-expressed as OCI's security\_mode (ENFORCING) + a master user - not the IAM access\_policies |
| Vector search / k-NN (knn\_vector, \_plugins/\_knn)                                  | Vector & ML        | Supported    | Full surface | k-NN is a supported OCI Search plugin                                                                                                                                                                        |

#### OpenSearch managed by Oracle

Tensor9 provisions OCI Search with OpenSearch in the customer's Oracle Cloud tenancy and configures the application to use its opensearch\_fqdn endpoint. Document and search requests reach the managed cluster directly. Oracle operates the OpenSearch service.

<div className="t9-diagram-scroll" role="region" aria-label="Scrollable diagram" tabIndex={0}>
  <img className="t9-diagram-light" src="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iOTAwIiBoZWlnaHQ9IjE4MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgOTAwIDE4MCIgcm9sZT0iaW1nIiBhcmlhLWxhYmVsPSJBcHBsaWNhdGlvbiByZXF1ZXN0cyByZWFjaCBPQ0kgU2VhcmNoIHdpdGggT3BlblNlYXJjaCBkaXJlY3RseSB0aHJvdWdoIGl0cyBPcGVuU2VhcmNoIGVuZHBvaW50LiBUZW5zb3I5IHByb3Zpc2lvbnMgdGhlIGNsdXN0ZXIgYW5kIGNvbmZpZ3VyZXMgaXRzIGVuZHBvaW50LiI+PHN0eWxlPnRleHR7Zm9udC1mYW1pbHk6SW50ZXIsLWFwcGxlLXN5c3RlbSxCbGlua01hY1N5c3RlbUZvbnQsJ1NlZ29lIFVJJyxSb2JvdG8sJ0hlbHZldGljYSBOZXVlJyxBcmlhbCxzYW5zLXNlcmlmO2ZpbGw6IzMzNDE1NX08L3N0eWxlPgo8ZGVmcz48bWFya2VyIGlkPSJvcy1yb3V0ZSIgbWFya2VyV2lkdGg9IjgiIG1hcmtlckhlaWdodD0iOCIgcmVmWD0iNyIgcmVmWT0iNCIgb3JpZW50PSJhdXRvIj48cGF0aCBkPSJNMCwwIEw4LDQgTDAsOCBaIiBmaWxsPSIjNjQ3NDhiIi8+PC9tYXJrZXI+PC9kZWZzPgo8ZyBzdHJva2U9IiM5NGEzYjgiPjxyZWN0IGZpbGw9IiNmOGZhZmMiIHg9IjIwIiB5PSI0MCIgd2lkdGg9IjI0MCIgaGVpZ2h0PSIxMDAiIHJ4PSIxMCIvPjxyZWN0IGZpbGw9IiNmOGZhZmMiIHg9IjMzMCIgeT0iNDAiIHdpZHRoPSIyNDAiIGhlaWdodD0iMTAwIiByeD0iMTAiLz48cmVjdCBmaWxsPSIjZjhmYWZjIiB4PSI2NDAiIHk9IjQwIiB3aWR0aD0iMjQwIiBoZWlnaHQ9IjEwMCIgcng9IjEwIi8+PC9nPgo8ZyBmb250LWZhbWlseT0ic3lzdGVtLXVpLHNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTciIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZpbGw9IiMwZjE3MmEiPjx0ZXh0IHg9IjE0MCIgeT0iNzgiPkFwcGxpY2F0aW9uPC90ZXh0Pjx0ZXh0IHg9IjQ1MCIgeT0iNzgiPkNvbmZpZ3VyZWQgZW5kcG9pbnQ8L3RleHQ+PHRleHQgeD0iNzYwIiB5PSI3OCI+T0NJIFNlYXJjaCB3aXRoIE9wZW5TZWFyY2g8L3RleHQ+PC9nPgo8ZyBmb250LWZhbWlseT0ic3lzdGVtLXVpLHNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTQiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZpbGw9IiM0NzU1NjkiPjx0ZXh0IHg9IjE0MCIgeT0iMTA4Ij5PcGVuU2VhcmNoIGNsaWVudDwvdGV4dD48dGV4dCB4PSI0NTAiIHk9IjEwOCI+RGlyZWN0IE9wZW5TZWFyY2ggcmVxdWVzdHM8L3RleHQ+PHRleHQgeD0iNzYwIiB5PSIxMDgiPkluZGV4ZXMgYW5kIHNlYXJjaDwvdGV4dD48L2c+CjxnIHN0cm9rZT0iIzY0NzQ4YiIgc3Ryb2tlLXdpZHRoPSIyIiBtYXJrZXItZW5kPSJ1cmwoI29zLXJvdXRlKSI+PHBhdGggZD0iTTI2MCA5MCBIMzI1Ii8+PHBhdGggZD0iTTU3MCA5MCBINjM1Ii8+PC9nPgo8L3N2Zz4=" alt="Application requests reach OCI Search with OpenSearch directly through its OpenSearch endpoint. Tensor9 provisions the cluster and configures its endpoint." />

  <img className="t9-diagram-dark" src="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iOTAwIiBoZWlnaHQ9IjE4MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgOTAwIDE4MCIgcm9sZT0iaW1nIiBhcmlhLWxhYmVsPSJBcHBsaWNhdGlvbiByZXF1ZXN0cyByZWFjaCBPQ0kgU2VhcmNoIHdpdGggT3BlblNlYXJjaCBkaXJlY3RseSB0aHJvdWdoIGl0cyBPcGVuU2VhcmNoIGVuZHBvaW50LiBUZW5zb3I5IHByb3Zpc2lvbnMgdGhlIGNsdXN0ZXIgYW5kIGNvbmZpZ3VyZXMgaXRzIGVuZHBvaW50LiI+PHN0eWxlPnRleHR7Zm9udC1mYW1pbHk6SW50ZXIsLWFwcGxlLXN5c3RlbSxCbGlua01hY1N5c3RlbUZvbnQsJ1NlZ29lIFVJJyxSb2JvdG8sJ0hlbHZldGljYSBOZXVlJyxBcmlhbCxzYW5zLXNlcmlmO2ZpbGw6I2NiZDVlMX08L3N0eWxlPgo8ZGVmcz48bWFya2VyIGlkPSJvcy1yb3V0ZSIgbWFya2VyV2lkdGg9IjgiIG1hcmtlckhlaWdodD0iOCIgcmVmWD0iNyIgcmVmWT0iNCIgb3JpZW50PSJhdXRvIj48cGF0aCBkPSJNMCwwIEw4LDQgTDAsOCBaIiBmaWxsPSIjNjQ3NDhiIi8+PC9tYXJrZXI+PC9kZWZzPgo8ZyBzdHJva2U9IiM0MTRlNjIiPjxyZWN0IGZpbGw9IiMxYTI2MzEiIHg9IjIwIiB5PSI0MCIgd2lkdGg9IjI0MCIgaGVpZ2h0PSIxMDAiIHJ4PSIxMCIvPjxyZWN0IGZpbGw9IiMxYTI2MzEiIHg9IjMzMCIgeT0iNDAiIHdpZHRoPSIyNDAiIGhlaWdodD0iMTAwIiByeD0iMTAiLz48cmVjdCBmaWxsPSIjMWEyNjMxIiB4PSI2NDAiIHk9IjQwIiB3aWR0aD0iMjQwIiBoZWlnaHQ9IjEwMCIgcng9IjEwIi8+PC9nPgo8ZyBmb250LWZhbWlseT0ic3lzdGVtLXVpLHNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTciIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZpbGw9IiM1NTc2YzIiPjx0ZXh0IHg9IjE0MCIgeT0iNzgiPkFwcGxpY2F0aW9uPC90ZXh0Pjx0ZXh0IHg9IjQ1MCIgeT0iNzgiPkNvbmZpZ3VyZWQgZW5kcG9pbnQ8L3RleHQ+PHRleHQgeD0iNzYwIiB5PSI3OCI+T0NJIFNlYXJjaCB3aXRoIE9wZW5TZWFyY2g8L3RleHQ+PC9nPgo8ZyBmb250LWZhbWlseT0ic3lzdGVtLXVpLHNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTQiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZpbGw9IiM3Njg4YTIiPjx0ZXh0IHg9IjE0MCIgeT0iMTA4Ij5PcGVuU2VhcmNoIGNsaWVudDwvdGV4dD48dGV4dCB4PSI0NTAiIHk9IjEwOCI+RGlyZWN0IE9wZW5TZWFyY2ggcmVxdWVzdHM8L3RleHQ+PHRleHQgeD0iNzYwIiB5PSIxMDgiPkluZGV4ZXMgYW5kIHNlYXJjaDwvdGV4dD48L2c+CjxnIHN0cm9rZT0iIzY0NzQ4YiIgc3Ryb2tlLXdpZHRoPSIyIiBtYXJrZXItZW5kPSJ1cmwoI29zLXJvdXRlKSI+PHBhdGggZD0iTTI2MCA5MCBIMzI1Ii8+PHBhdGggZD0iTTU3MCA5MCBINjM1Ii8+PC9nPgo8L3N2Zz4=" alt="Application requests reach OCI Search with OpenSearch directly through its OpenSearch endpoint. Tensor9 provisions the cluster and configures its endpoint." />
</div>

#### Engine and plugins

The target runs OpenSearch. The listed core REST operations and supported plugins use native OpenSearch APIs, including k-NN, SQL/PPL, Index State Management, Alerting, Anomaly Detection, ML Commons, Neural Search and Security Analytics. Match the selected engine and plugin versions to the application before migration. Elasticsearch \_license and \_xpack endpoints are not part of OpenSearch.

The documented OCI versions are 2.11, 2.15, 2.18, 2.19.1, 3.2 and 3.6. The same engine across providers still requires a version-compatibility review; it does not establish byte-identical behavior for every request.

#### Topology and security

Size data, leader and OpenSearch Dashboards nodes, with optional coordinator, machine-learning and search tiers. The cluster uses the customer's VCN and subnet; Oracle manages the software and distributes data nodes across availability domains.

Configure the OpenSearch Security plugin with security\_mode set to ENFORCING and a master user. Supported authentication includes SAML, LDAP and OIDC, with document- and field-level security on supported versions. AWS IAM access\_policies do not transfer directly. Storage encryption is service-managed; this mapping has no per-domain AWS KMS customer-key setting.

#### Backups and availability

OCI takes daily managed backups with 14-day retention. The manual Snapshot API can use an Object Storage repository in the customer tenancy. These backup controls differ from AWS domain snapshots, so configure recovery destinations and test restoration before cutover.

The documented OCI FAQ describes a 99.9% service-level objective, not a contractual availability SLA. Node placement and replicas provide high availability, but the objective is not a contractual guarantee. Evaluate the current service terms for the customer deployment.

#### Migration and sizing

The new cluster starts empty. Restore a compatible snapshot through a registered repository or reindex the source; OCI does not automatically import the AWS domain's indexes. Verify mappings, analyzers, queries and Security-plugin configuration before switching the endpoint.

The service uses Oracle compute and storage shapes, with the limits listed in the comparison. AWS instance families, EBS limits and UltraWarm settings are not interchangeable sizing inputs. Measure the customer workload on the selected topology and retain adequate storage and replica capacity.

## On Scaleway

### Scaleway Cloud Essentials for OpenSearch

| Operation                                                                            | Area               | Support   | Depth        | Notes                                                                                                                                                                                                                                                               |
| ------------------------------------------------------------------------------------ | ------------------ | --------- | ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Cluster health / stats / \_cat APIs                                                  | Cluster            | Supported | Most usage   | -                                                                                                                                                                                                                                                                   |
| Tasks API (\_tasks)                                                                  | Cluster            | Supported | Full surface | drives async reindex / update-by-query                                                                                                                                                                                                                              |
| Bulk (\_bulk)                                                                        | Documents          | Supported | Common       | batch index/update/delete                                                                                                                                                                                                                                           |
| Delete document                                                                      | Documents          | Supported | Common       | -                                                                                                                                                                                                                                                                   |
| Get document (GET /\{index}/\_doc/\{id})                                             | Documents          | Supported | Common       | -                                                                                                                                                                                                                                                                   |
| Index document (PUT/POST /\{index}/\_doc)                                            | Documents          | Supported | Common       | -                                                                                                                                                                                                                                                                   |
| Multi-get (\_mget)                                                                   | Documents          | Supported | Most usage   | -                                                                                                                                                                                                                                                                   |
| Update document (\_update)                                                           | Documents          | Supported | Common       | -                                                                                                                                                                                                                                                                   |
| Snapshots / backups (\_snapshot)                                                     | Durability         | Partial   | Full surface | Scaleway's own backup model rather than AWS managed snapshots; the \_snapshot API remains available against a repository you configure                                                                                                                              |
| Aliases (\_aliases)                                                                  | Index management   | Supported | Most usage   | -                                                                                                                                                                                                                                                                   |
| Analyze (\_analyze)                                                                  | Index management   | Supported | Full surface | tokenizer/analyzer testing                                                                                                                                                                                                                                          |
| Create / Delete / Get index                                                          | Index management   | Supported | Common       | -                                                                                                                                                                                                                                                                   |
| Data streams (\_data\_stream)                                                        | Index management   | Supported | Full surface | -                                                                                                                                                                                                                                                                   |
| Open / Close index                                                                   | Index management   | Supported | Full surface | -                                                                                                                                                                                                                                                                   |
| Put / Get mapping                                                                    | Index management   | Supported | Common       | -                                                                                                                                                                                                                                                                   |
| Refresh / Flush / Forcemerge                                                         | Index management   | Supported | Most usage   | -                                                                                                                                                                                                                                                                   |
| Rollover / Shrink / Split / Clone                                                    | Index management   | Supported | Full surface | -                                                                                                                                                                                                                                                                   |
| Update / Get settings                                                                | Index management   | Supported | Most usage   | -                                                                                                                                                                                                                                                                   |
| Index & component templates (\_index\_template / \_component\_template)              | Ingest & templates | Supported | Full surface | -                                                                                                                                                                                                                                                                   |
| Ingest pipelines (\_ingest/pipeline: put / get / delete / \_simulate)                | Ingest & templates | Supported | Full surface | -                                                                                                                                                                                                                                                                   |
| License / X-Pack (\_license, \_xpack)                                                | Licensing          | Supported | Full surface | no license API - OpenSearch (Apache-2.0)                                                                                                                                                                                                                            |
| Index State Management (\_plugins/\_ism)                                             | Lifecycle          | Supported | Full surface | Index State Management runs natively via the ISM plugin                                                                                                                                                                                                             |
| Alerting / anomaly detection / ML Commons (\_plugins/\*)                             | Observability & ML | Supported | Full surface | Alerting, Anomaly Detection and ML Commons ship in the distribution                                                                                                                                                                                                 |
| Notifications / observability (\_plugins/\_notifications, \_plugins/\_observability) | Observability & ML | Supported | Full surface | Alerting, Anomaly Detection and ML Commons ship in the distribution                                                                                                                                                                                                 |
| PPL (\_plugins/\_ppl)                                                                | Query languages    | Supported | Full surface | PPL (\_plugins/\_ppl) ships in the distribution                                                                                                                                                                                                                     |
| SQL (\_plugins/\_sql)                                                                | Query languages    | Supported | Full surface | the SQL plugin (\_plugins/\_sql) ships in the distribution                                                                                                                                                                                                          |
| Stored scripts & Painless (\_scripts, \_scripts/painless/\_execute)                  | Scripting          | Supported | Full surface | -                                                                                                                                                                                                                                                                   |
| Aggregations                                                                         | Search             | Supported | Common       | metrics + bucket aggregations in \_search                                                                                                                                                                                                                           |
| Count / Explain / Suggest                                                            | Search             | Supported | Most usage   | -                                                                                                                                                                                                                                                                   |
| Field capabilities (\_field\_caps)                                                   | Search             | Supported | Full surface | -                                                                                                                                                                                                                                                                   |
| Multi-search (\_msearch)                                                             | Search             | Supported | Most usage   | -                                                                                                                                                                                                                                                                   |
| Point-in-time (\_search/point\_in\_time)                                             | Search             | Supported | Most usage   | native - a real OpenSearch engine, not a compatible API layer                                                                                                                                                                                                       |
| Reindex / Update-by-query / Delete-by-query                                          | Search             | Supported | Full surface | -                                                                                                                                                                                                                                                                   |
| Scroll (\_search/scroll)                                                             | Search             | Supported | Most usage   | deep pagination                                                                                                                                                                                                                                                     |
| Search (\_search + query DSL)                                                        | Search             | Supported | Common       | -                                                                                                                                                                                                                                                                   |
| Search templates (\_search/template, \_render/template)                              | Search             | Supported | Full surface | -                                                                                                                                                                                                                                                                   |
| Term vectors (\_termvectors / \_mtermvectors)                                        | Search             | Supported | Full surface | -                                                                                                                                                                                                                                                                   |
| Security plugin / fine-grained access control (\_plugins/\_security)                 | Security           | Partial   | Full surface | the Security plugin is present, but Scaleway's deployment exposes a single user\_name/password pair - per-index and per-role authorization is configured INSIDE OpenSearch rather than by the cloud, and the domain's IAM resource policy has no counterpart at all |
| Vector search / k-NN (knn\_vector, \_plugins/\_knn)                                  | Vector & ML        | Supported | Full surface | k-NN and Neural search ship in the OpenSearch distribution                                                                                                                                                                                                          |

## Existing data and credentials

Selecting a backend does not copy existing data, credentials or access policies. Plan and verify migration separately before changing an application's endpoint. Do not assume an identifier, credential or encrypted value from the origin service works unchanged on the target.

## Configure, tune and debug

Start with [setup](/cloud-adapter/getting-started/overview) and [configuration](/cloud-adapter/configuration/overview). Use [tuning](/cloud-adapter/tuning/overview) to understand supported request tags, [debugging](/cloud-adapter/debugging/overview) to investigate a request, and [High Fidelity Cloud Emulators](/cloud-adapter/local-testing/overview) to validate a bounded reproduction.
