Polygres

PolyGres

← Back to the PolyWire overview

OpenSearch → PostgreSQL. No client change.

Your OpenSearch client thinks it's talking to OpenSearch. It's actually talking to Postgres — and it never finds out. A plain REST client or opensearch-py connects over the real OpenSearch HTTP/JSON wire protocol; PolyWire executes every search and index call against a real PostgreSQL database on the other end.

How it works

OpenSearch client REST or opensearch-py — unmodified, same client you already use
POLYWIRE OSWire (real OpenSearch HTTP/JSON wire protocol) → Connect · Protect · Control · Accelerate · Observe
PostgreSQL, anywhere RDS · Aurora · Cloud SQL · Azure · OCI · Supabase · On-prem

See it happen

$ curl -s localhost:9200/orders/_search

{
  "hits": {
    "total": { "value": 2 },
    "hits": [
      { "_source": { "order_id": 1001, "amount": 129.99 } },
      { "_source": { "order_id": 1002, "amount": 89.50 } }
    ]
  }
}
REST clientOSWirePolyWirePostgreSQL

OpenSearch client. OpenSearch wire protocol. PostgreSQL database. No client rewrite. Document contents above are illustrative — the call and path are exactly real. See PolyWire capabilities for exact client-by-client coverage.

Try it in 60 seconds

1. Start PolyWire — point it at a Postgres you already have:

docker run -p 9200:9200 \ -e POLYWIRE_HOST=<host> -e POLYWIRE_PASSWORD=<password> \ ghcr.io/polygres26/polywire:latest

2. Connect — same REST calls you already make:

curl -s localhost:9200/_search

3. Done — REST client → OSWire → PolyWire → PostgreSQL. No client change.

Pointing at a specific managed Postgres instead — Amazon RDS, Google Cloud SQL, Azure Database for PostgreSQL, or Oracle OCI? See CONNECTING.md for the real provider-specific setup.

Why teams do this

Consolidate search onto Postgres

Keep the OpenSearch API surface your application already calls, without running a separate OpenSearch cluster alongside Postgres.

Standardize on Postgres

Consolidate OpenSearch, MongoDB, Oracle, MySQL, and more onto one real Postgres database, without every team rewriting its data layer first.

Keep governance in one place

The same SQL firewall, QoS, and audit path that governs every other protocol also governs this one — not a separate, unguarded route to your data.

Compatibility, honestly scoped

ProtocolClient tested againstBound parameters decodedNative error translationRLS identity
OpenSearchopensearch-pyHash by doc_id✓ (error.type/reason)

Full compatibility matrix, all ten protocols →

Ready to put PolyWire in front of Postgres?

Try it free — Developer Edition, all features. Taking it to production? Bring your architecture and we'll help map the deployment.