Skip to main content

PostgreSQL to Elasticsearch/OpenSearch sync

Requirements

Postgres setup

Enable logical decoding in your Postgres setting.

  • You also need to set up two parameters in your Postgres config postgresql.conf

    wal_level = logical

    max_replication_slots = 1

Installation

You can install PGSync from PyPI:

$ pip install pgsync

Config

Create a schema for the application named e.g schema.json

Example schema

Example spec

.. code-block::

[
    {
        "database": "[database name]",
        "index": "[Elasticsearch or OpenSearch index]",
        "nodes": {
            "table": "[table A]",
            "schema": "[table A schema]",
            "columns": [
                "column 1 from table A",
                "column 2 from table A",
                ... additional columns
            ],
            "children": [
                {
                    "table": "[table B with relationship to table A]",
                    "schema": "[table B schema]",
                    "columns": [
                      "column 1 from table B",
                      "column 2 from table B",
                      ... additional columns
                    ],
                    "relationship": {
                        "variant": "object",
                        "type": "one_to_many"
                    },
                    ...
                },
                {
                    ... additional children
                }
            ]
        }
    }
]

Environment variables

Setup environment variables required for the application

SCHEMA='/path/to/schema.json'

ELASTICSEARCH_HOST=localhost
ELASTICSEARCH_PORT=9200

PG_HOST=localhost
PG_USER=i-am-root # this must be a postgres superuser or replication user
PG_PORT=5432
PG_PASSWORD=*****

REDIS_HOST=redis
REDIS_PORT=6379
REDIS_DB=0
REDIS_AUTH=*****

Running

Bootstrap the database (one time only)

  • $ bootstrap --config schema.json

Run pgsync as a daemon

  • $ pgsync --config schema.json --daemon

Metadata

Release files for retake-pgsync 2.5.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for retake-pgsync 2.5.4
File Size Uploaded
retake-pgsync-2.5.4.tar.gz 110.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for retake-pgsync 2.5.4
File Interpreter ABI Platform
retake_pgsync-2.5.4-py3-none-any.whl Python 3 none any Details

Total release size: 168.2 kB

Release files / retake-pgsync-2.5.4.tar.gz

Download URL retake-pgsync-2.5.4.tar.gz
Size 110.2 kB
Tags Source
SHA-256 checksum
How to use checksums
99b40018c6d2c8db78f2f741e266bce61c890754b7c62aad8dc3c634262cf213
BLAKE2b-256 checksum
How to use checksums
0faff1cde56a454d8f00f1dc741d1c43c7810909e546c8e4bf76c9260424a3f3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.11.4

Release files / retake_pgsync-2.5.4-py3-none-any.whl

Download URL retake_pgsync-2.5.4-py3-none-any.whl
Size 58.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c1c8a93387ef8bb6949d2f7bd60861d2e7d6dbe39ba8e0f0f256bf136cef50d0
BLAKE2b-256 checksum
How to use checksums
83188c5768a5d47cc96fd2a77fce02492c80e35800af07eaf7107bae18e61376
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.11.4

Release history Release notifications | RSS feed

This release

2.5.4 This release

2 release files

2.5.3

2 release files

2.5.2

2 release files

2.5.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page