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 pgsync-kaboom 2.5.0

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

Source distribution (sdist)

Source distribution for pgsync-kaboom 2.5.0
File Size Uploaded
pgsync-kaboom-2.5.0.tar.gz 110.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pgsync-kaboom 2.5.0
File Interpreter ABI Platform
pgsync_kaboom-2.5.0-py3-none-any.whl Python 3 none any Details

Total release size: 167.9 kB

Release files / pgsync-kaboom-2.5.0.tar.gz

Download URL pgsync-kaboom-2.5.0.tar.gz
Size 110.0 kB
Tags Source
SHA-256 checksum
How to use checksums
cb1326ba1b9b7dbce69920a426dd6c70489f737edc4708f92bf45ad9f3343fb7
BLAKE2b-256 checksum
How to use checksums
fd7f8b3c27793381567802db72c4da0c99c93884905da9a4ade5a50d3734a3f3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.9.6

Release files / pgsync_kaboom-2.5.0-py3-none-any.whl

Download URL pgsync_kaboom-2.5.0-py3-none-any.whl
Size 57.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
6760fa7b6abf3006e02ecf689e18e98d3f06767dca1c60e28ea732c60a701ade
BLAKE2b-256 checksum
How to use checksums
fb60d0229c30c79f27555eca78bdd5300c29ce4891740a1efb034bd6bd4a3cfd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.9.6

Release history Release notifications | RSS feed

This release

2.5.0 This release

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