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#
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 } }
]
}
}
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:latest2. Connect — same REST calls you already make:
curl -s localhost:9200/_search3. 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#
| Protocol | Client tested against | Bound parameters decoded | Native error translation | RLS identity |
|---|---|---|---|---|
| OpenSearch | opensearch-py | Hash by doc_id | ✓ (error.type/reason) | — |
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.