Skip to main content

Postgres to Elasticsearch/OpenSearch sync

Project description

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pgsync-fork-2.7.3.tar.gz (110.2 kB view details)

Uploaded Source

Built Distribution

pgsync_fork-2.7.3-py3-none-any.whl (57.9 kB view details)

Uploaded Python 3

File details

Details for the file pgsync-fork-2.7.3.tar.gz.

File metadata

  • Download URL: pgsync-fork-2.7.3.tar.gz
  • Upload date:
  • Size: 110.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.4

File hashes

Hashes for pgsync-fork-2.7.3.tar.gz
Algorithm Hash digest
SHA256 29d210f5b365829c8336412920591161cccaeaf2fd4aa6c077ab32a03e768d1d
MD5 534649888f3d8d6071b55574b306108f
BLAKE2b-256 4810cfd341da8b2e94fb87e3c4a3038e00179c681e772cc53adfa134201288f8

See more details on using hashes here.

File details

Details for the file pgsync_fork-2.7.3-py3-none-any.whl.

File metadata

  • Download URL: pgsync_fork-2.7.3-py3-none-any.whl
  • Upload date:
  • Size: 57.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.4

File hashes

Hashes for pgsync_fork-2.7.3-py3-none-any.whl
Algorithm Hash digest
SHA256 8c4bf49d6dd5c827143e5c0749086881fd62a96a269f7c3d116419ef709e28ea
MD5 302841942a6e6458bb689fb37a7562e5
BLAKE2b-256 d7b1bb22fdc06127a569c61aa91b9c2e0e677cf44e553b4041e7f946e88b30c4

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page