%global _empty_manifest_terminate_build 0 Name: python-pgsync Version: 2.5.0 Release: 1 Summary: Postgres to Elasticsearch/OpenSearch sync License: LGPLv3 URL: https://github.com/toluaina/pgsync Source0: https://mirrors.nju.edu.cn/pypi/web/packages/6d/e2/b89c70db649a723f8542d6304ba43e96d1009f1b4786bf2576ac2d95147c/pgsync-2.5.0.tar.gz BuildArch: noarch Requires: python3-async-timeout Requires: python3-black Requires: python3-boto3 Requires: python3-botocore Requires: python3-bump2version Requires: python3-bumpversion Requires: python3-certifi Requires: python3-charset-normalizer Requires: python3-click Requires: python3-distlib Requires: python3-elasticsearch Requires: python3-elasticsearch-dsl Requires: python3-environs Requires: python3-faker Requires: python3-filelock Requires: python3-greenlet Requires: python3-idna Requires: python3-importlib-metadata Requires: python3-isort Requires: python3-jmespath Requires: python3-marshmallow Requires: python3-mypy-extensions Requires: python3-newrelic Requires: python3-opensearch-dsl Requires: python3-opensearch-py Requires: python3-packaging Requires: python3-pathspec Requires: python3-platformdirs Requires: python3-psycopg2-binary Requires: python3-dateutil Requires: python3-dotenv Requires: python3-redis Requires: python3-requests Requires: python3-requests-aws4auth Requires: python3-s3transfer Requires: python3-six Requires: python3-sqlalchemy Requires: python3-sqlparse Requires: python3-tomli Requires: python3-typing-extensions Requires: python3-urllib3 Requires: python3-virtualenv Requires: python3-zipp %description # PostgreSQL to Elasticsearch/OpenSearch sync - [PGSync](https://pgsync.com) is a middleware for syncing data from [Postgres](https://www.postgresql.org) to [Elasticsearch](https://www.elastic.co/products/elastic-stack)/[OpenSearch](https://opensearch.org/) or [OpenSearch](https://opensearch.org/). - It allows you to keep [Postgres](https://www.postgresql.org) as your source of truth data source and expose structured denormalized documents in [Elasticsearch](https://www.elastic.co/products/elastic-stack)/[OpenSearch](https://opensearch.org/). ### Requirements - [Python](https://www.python.org) 3.7+ - [Postgres](https://www.postgresql.org) 9.6+ - [Redis](https://redis.io) 3.1.0 - [Elasticsearch](https://www.elastic.co/products/elastic-stack) 6.3.1+ or [OpenSearch](https://opensearch.org/) 1.3.7+ - [SQlAlchemy](https://www.sqlalchemy.org) 1.3.4+ ### Postgres setup Enable [logical decoding](https://www.postgresql.org/docs/current/logicaldecoding.html) 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](https://pypi.org): $ pip install pgsync ### Config Create a schema for the application named e.g **schema.json** [Example schema](https://github.com/toluaina/pgsync/blob/main/examples/airbnb/schema.json) 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 %package -n python3-pgsync Summary: Postgres to Elasticsearch/OpenSearch sync Provides: python-pgsync BuildRequires: python3-devel BuildRequires: python3-setuptools BuildRequires: python3-pip %description -n python3-pgsync # PostgreSQL to Elasticsearch/OpenSearch sync - [PGSync](https://pgsync.com) is a middleware for syncing data from [Postgres](https://www.postgresql.org) to [Elasticsearch](https://www.elastic.co/products/elastic-stack)/[OpenSearch](https://opensearch.org/) or [OpenSearch](https://opensearch.org/). - It allows you to keep [Postgres](https://www.postgresql.org) as your source of truth data source and expose structured denormalized documents in [Elasticsearch](https://www.elastic.co/products/elastic-stack)/[OpenSearch](https://opensearch.org/). ### Requirements - [Python](https://www.python.org) 3.7+ - [Postgres](https://www.postgresql.org) 9.6+ - [Redis](https://redis.io) 3.1.0 - [Elasticsearch](https://www.elastic.co/products/elastic-stack) 6.3.1+ or [OpenSearch](https://opensearch.org/) 1.3.7+ - [SQlAlchemy](https://www.sqlalchemy.org) 1.3.4+ ### Postgres setup Enable [logical decoding](https://www.postgresql.org/docs/current/logicaldecoding.html) 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](https://pypi.org): $ pip install pgsync ### Config Create a schema for the application named e.g **schema.json** [Example schema](https://github.com/toluaina/pgsync/blob/main/examples/airbnb/schema.json) 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 %package help Summary: Development documents and examples for pgsync Provides: python3-pgsync-doc %description help # PostgreSQL to Elasticsearch/OpenSearch sync - [PGSync](https://pgsync.com) is a middleware for syncing data from [Postgres](https://www.postgresql.org) to [Elasticsearch](https://www.elastic.co/products/elastic-stack)/[OpenSearch](https://opensearch.org/) or [OpenSearch](https://opensearch.org/). - It allows you to keep [Postgres](https://www.postgresql.org) as your source of truth data source and expose structured denormalized documents in [Elasticsearch](https://www.elastic.co/products/elastic-stack)/[OpenSearch](https://opensearch.org/). ### Requirements - [Python](https://www.python.org) 3.7+ - [Postgres](https://www.postgresql.org) 9.6+ - [Redis](https://redis.io) 3.1.0 - [Elasticsearch](https://www.elastic.co/products/elastic-stack) 6.3.1+ or [OpenSearch](https://opensearch.org/) 1.3.7+ - [SQlAlchemy](https://www.sqlalchemy.org) 1.3.4+ ### Postgres setup Enable [logical decoding](https://www.postgresql.org/docs/current/logicaldecoding.html) 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](https://pypi.org): $ pip install pgsync ### Config Create a schema for the application named e.g **schema.json** [Example schema](https://github.com/toluaina/pgsync/blob/main/examples/airbnb/schema.json) 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 %prep %autosetup -n pgsync-2.5.0 %build %py3_build %install %py3_install install -d -m755 %{buildroot}/%{_pkgdocdir} if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi pushd %{buildroot} if [ -d usr/lib ]; then find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/lib64 ]; then find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/bin ]; then find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/sbin ]; then find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst fi touch doclist.lst if [ -d usr/share/man ]; then find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst fi popd mv %{buildroot}/filelist.lst . mv %{buildroot}/doclist.lst . %files -n python3-pgsync -f filelist.lst %dir %{python3_sitelib}/* %files help -f doclist.lst %{_docdir}/* %changelog * Fri May 05 2023 Python_Bot - 2.5.0-1 - Package Spec generated