|
3 | 3 | <!-- markdownlint-disable MD033 MD041 --> |
4 | 4 |
|
5 | 5 |
|
6 | | - |
7 | 6 | <p align="left"> |
8 | 7 | <img src="https://raw.githubusercontent.com/stac-utils/stac-fastapi-elasticsearch-opensearch/refs/heads/main/assets/sfeos.png" width=1000> |
9 | 8 | </p> |
@@ -68,6 +67,7 @@ This project is built on the following technologies: STAC, stac-fastapi, FastAPI |
68 | 67 | ## Table of Contents |
69 | 68 |
|
70 | 69 | - [Documentation & Resources](#documentation--resources) |
| 70 | +- [Package Structure](#package-structure) |
71 | 71 | - [Examples](#examples) |
72 | 72 | - [Performance](#performance) |
73 | 73 | - [Quick Start](#quick-start) |
@@ -95,6 +95,21 @@ This project is built on the following technologies: STAC, stac-fastapi, FastAPI |
95 | 95 | - [Gitter Chat](https://app.gitter.im/#/room/#stac-fastapi-elasticsearch_community:gitter.im) - For real-time discussions |
96 | 96 | - [GitHub Discussions](https://github.com/stac-utils/stac-fastapi-elasticsearch-opensearch/discussions) - For longer-form questions and answers |
97 | 97 |
|
| 98 | +## Package Structure |
| 99 | + |
| 100 | +This project is organized into several packages, each with a specific purpose: |
| 101 | + |
| 102 | +- **stac_fastapi_core**: Core functionality that's database-agnostic, including API models, extensions, and shared utilities. This package provides the foundation for building STAC API implementations with any database backend. See [stac-fastapi-mongo](https://github.com/Healy-Hyperspatial/stac-fastapi-mongo) for a working example. |
| 103 | + |
| 104 | +- **sfeos_helpers**: Shared helper functions and utilities used by both the Elasticsearch and OpenSearch backends. This package includes: |
| 105 | + - `database`: Specialized modules for index, document, and database utility operations |
| 106 | + - `aggregation`: Elasticsearch/OpenSearch-specific aggregation functionality |
| 107 | + - Shared logic and utilities that improve code reuse between backends |
| 108 | + |
| 109 | +- **stac_fastapi_elasticsearch**: Complete implementation of the STAC API using Elasticsearch as the backend database. This package depends on both `stac_fastapi_core` and `sfeos_helpers`. |
| 110 | +- |
| 111 | +- **stac_fastapi_opensearch**: Complete implementation of the STAC API using OpenSearch as the backend database. This package depends on both `stac_fastapi_core` and `sfeos_helpers`. |
| 112 | + |
98 | 113 | ## Examples |
99 | 114 |
|
100 | 115 | The `/examples` directory contains several useful examples and reference implementations: |
@@ -181,6 +196,7 @@ There are two main ways to run the API locally: |
181 | 196 | - **Compatibility**: The most recent Elasticsearch 7.x versions should also work. See the [opensearch-py docs](https://github.com/opensearch-project/opensearch-py/blob/main/COMPATIBILITY.md) for compatibility information. |
182 | 197 |
|
183 | 198 |
|
| 199 | + |
184 | 200 | ## Configuration Reference |
185 | 201 |
|
186 | 202 | You can customize additional settings in your `.env` file: |
@@ -518,5 +534,6 @@ You can customize additional settings in your `.env` file: |
518 | 534 | - Limits each client to a specified number of requests per time period (e.g., 500 requests per minute) |
519 | 535 | - Helps prevent API abuse and maintains system stability |
520 | 536 | - Ensures fair resource allocation among all clients |
521 | | -
|
| 537 | + |
522 | 538 | - **Examples**: Implementation examples are available in the [examples/rate_limit](examples/rate_limit) directory. |
| 539 | +
|
0 commit comments