Skip to content

Commit 975e12f

Browse files
authored
v6.9.0 release (#576)
**Related Issue(s):** - None **Description:** This release introduces **Custom Index Mappings**, allowing users to extend or override Elasticsearch/OpenSearch mappings directly via environment variables (`STAC_FASTAPI_ES_CUSTOM_MAPPINGS`) without modifying source code—essential for supporting STAC extensions like SAR or Cube. It also adds **Wildcard Support** to the Fields extension, enabling flexible include/exclude patterns (e.g., `properties.*.lat`) while strictly enforcing a secure "exclude-always-wins" precedence policy. Additionally, this update includes significant **CI/CD optimizations** by consolidating test environments into a single Docker image, reducing build times. We have also reorganized the documentation for better readability and implemented retry logic to resolve race conditions in datetime-partitioned index searches. **PR Checklist:** - [x] Code is formatted and linted (run `pre-commit run --all-files`) - [x] Tests pass (run `make test`) - [x] Documentation has been updated to reflect changes, if applicable - [x] Changes are added to the changelog
1 parent 408551e commit 975e12f

11 files changed

Lines changed: 32 additions & 21 deletions

File tree

CHANGELOG.md

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,22 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
88
## [Unreleased]
99

1010
### Added
11+
12+
### Changed
13+
14+
### Fixed
15+
16+
### Removed
17+
18+
### Updated
19+
20+
## [v6.9.0] - 2026-01-09
21+
22+
### Added
23+
1124
- Added `STAC_FASTAPI_ES_MAPPINGS_FILE` environment variable to support file-based custom mappings configuration.
1225
- Added configuration-based support for extending Elasticsearch/OpenSearch index mappings via environment variables, allowing users to customize field mappings without code change through `STAC_FASTAPI_ES_CUSTOM_MAPPINGS` environment variable. Also added `STAC_FASTAPI_ES_DYNAMIC_MAPPING` variable to control dynamic mapping behavior. [#546](https://github.com/stac-utils/stac-fastapi-elasticsearch-opensearch/pull/546)
1326

14-
- `filter_fields` supports wildcard declarations (`*`) for including and excluding fields, where `properties.*.lat` include would include any extension's with a `lat` attribute. The same functionality is included in the exclude declaration.
15-
1627
### Changed
1728

1829
- `filter_fields` supports wildcard declarations (`*`) for including and excluding fields, where `properties.*.lat` include would include any extension's with a `lat` attribute. The same functionality is included in the exclude fields. If field is explicitly included in the include fields it cannot be explicitly excluded. [#567](https://github.com/stac-utils/stac-fastapi-elasticsearch-opensearch/pull/567)
@@ -21,8 +32,6 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
2132

2233
- Optimized test execution by implementing single Docker image for both Elasticsearch and OpenSearch. Tests now reuse a single pre-built image instead of rebuilding for each test suite. [#570](https://github.com/stac-utils/stac-fastapi-elasticsearch-opensearch/pull/570)
2334

24-
### Removed
25-
2635
### Updated
2736

2837
- Reorganized README configuration reference into logical sections for better readability. [#569](https://github.com/stac-utils/stac-fastapi-elasticsearch-opensearch/pull/569)
@@ -709,7 +718,8 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
709718
- Use genexp in execute_search and get_all_collections to return results.
710719
- Added db_to_stac serializer to item_collection method in core.py.
711720

712-
[Unreleased]: https://github.com/stac-utils/stac-fastapi-elasticsearch-opensearch/compare/v6.8.1...main
721+
[Unreleased]: https://github.com/stac-utils/stac-fastapi-elasticsearch-opensearch/compare/v6.9.0...main
722+
[v6.9.0]: https://github.com/stac-utils/stac-fastapi-elasticsearch-opensearch/compare/v6.8.1...v6.9.0
713723
[v6.8.1]: https://github.com/stac-utils/stac-fastapi-elasticsearch-opensearch/compare/v6.8.0...v6.8.1
714724
[v6.8.0]: https://github.com/stac-utils/stac-fastapi-elasticsearch-opensearch/compare/v6.7.6...v6.8.0
715725
[v6.7.6]: https://github.com/stac-utils/stac-fastapi-elasticsearch-opensearch/compare/v6.7.5...v6.7.6

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,18 +28,19 @@ The following organizations have contributed time and/or funding to support the
2828

2929
## Latest News
3030

31+
- **01/09/2026:** New Feature: **Custom Index Mappings**. You can now customize Elasticsearch/OpenSearch index mappings directly via environment variables without changing source code. Use `STAC_FASTAPI_ES_CUSTOM_MAPPINGS` to merge custom field definitions (e.g., for STAC extensions like SAR or Cube) or `STAC_FASTAPI_ES_MAPPINGS_FILE` to load mappings from a JSON file. See [Custom Index Mappings](#custom-index-mappings) for details.
3132
- **12/09/2025:** Feature Merge: **Catalogs Endpoint**. The [`Catalogs Endpoint`](https://github.com/Healy-Hyperspatial/stac-api-extensions-catalogs-endpoint) extension is now in main! This enables a registry of catalogs and supports **poly-hierarchy** (collections belonging to multiple catalogs simultaneously). Enable it via `ENABLE_CATALOGS_EXTENSION`. _Coming next: Support for nested sub-catalogs._
3233
- **11/07/2025:** 🌍 The SFEOS STAC Viewer is now available at: https://healy-hyperspatial.github.io/sfeos-web. Use this site to examine your data and test your STAC API!
3334
- **10/24/2025:** Added `previous_token` pagination using Redis for efficient navigation. This feature allows users to navigate backwards through large result sets by storing pagination state in Redis. To use this feature, ensure Redis is configured (see [Redis for navigation](#redis-for-navigation)) and set `REDIS_ENABLE=true` in your environment.
3435
- **10/23/2025:** The `EXCLUDED_FROM_QUERYABLES` environment variable was added to exclude fields from the `queryables` endpoint. See [docs](#excluding-fields-from-queryables).
3536
- **10/15/2025:** 🚀 SFEOS Tools v0.1.0 Released! - The new `sfeos-tools` CLI is now available on [PyPI](https://pypi.org/project/sfeos-tools/)
3637
- **10/15/2025:** Added `reindex` command to **[SFEOS-tools](https://github.com/Healy-Hyperspatial/sfeos-tools)** for zero-downtime index updates when changing mappings or settings. The new `reindex` command makes it easy to apply mapping changes, update index settings, or migrate to new index structures without any service interruption, ensuring high availability of your STAC API during maintenance operations.
37-
- **10/12/2025:** Collections search **bbox** functionality added! The collections search extension now supports bbox queries. Collections will need to be updated via the API or with the new **[SFEOS-tools](https://github.com/Healy-Hyperspatial/sfeos-tools)** CLI package to support geospatial discoverability. 🙏 Thanks again to **CloudFerro** for their sponsorship of this work!
3838

3939
<details style="border: 1px solid #eaecef; border-radius: 6px; padding: 10px; margin-bottom: 16px; background-color: #f9f9f9;">
4040
<summary style="cursor: pointer; font-weight: bold; margin: -10px -10px 0; padding: 10px; background-color: #f0f0f0; border-bottom: 1px solid #eaecef; border-top-left-radius: 6px; border-top-right-radius: 6px;">View Older News (Click to Expand)</summary>
4141

4242
-------------
43+
- **10/12/2025:** Collections search **bbox** functionality added! The collections search extension now supports bbox queries. Collections will need to be updated via the API or with the new **[SFEOS-tools](https://github.com/Healy-Hyperspatial/sfeos-tools)** CLI package to support geospatial discoverability. 🙏 Thanks again to **CloudFerro** for their sponsorship of this work!
4344
- **10/04/2025:** The **[CloudFerro](https://cloudferro.com/)** logo has been added to the sponsors and supporters list above. Their sponsorship of the ongoing collections search extension work has been invaluable. This is in addition to the many other important changes and updates their developers have added to the project.
4445
- **09/25/2025:** v6.5.0 adds a new GET/POST /collections-search endpoint (disabled by default via ENABLE_COLLECTIONS_SEARCH_ROUTE) to avoid conflicts with the Transactions Extension, and enhances collections search with structured filtering (CQL2 JSON/text), query, and datetime filtering. These changes make collection discovery more powerful and configurable while preserving compatibility with transaction-enabled deployments.
4546
<!-- Add more older news items here in Markdown format; GitHub will parse them thanks to the blank line implicit in this structure -->
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
"""library version."""
2-
__version__ = "6.8.1"
2+
__version__ = "6.9.0"

stac_fastapi/elasticsearch/pyproject.toml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,8 @@ keywords = [
2828
]
2929
dynamic = ["version"]
3030
dependencies = [
31-
"stac-fastapi-core==6.8.1",
32-
"sfeos-helpers==6.8.1",
31+
"stac-fastapi-core==6.9.0",
32+
"sfeos-helpers==6.9.0",
3333
"elasticsearch[async]~=8.19.1",
3434
"uvicorn~=0.23.0",
3535
"starlette>=0.35.0,<0.36.0",
@@ -48,7 +48,7 @@ dev = [
4848
"httpx>=0.24.0,<0.28.0",
4949
"redis~=6.4.0",
5050
"retry~=0.9.2",
51-
"stac-fastapi-core[redis]==6.8.1",
51+
"stac-fastapi-core[redis]==6.9.0",
5252
]
5353
docs = [
5454
"mkdocs~=1.4.0",
@@ -58,7 +58,7 @@ docs = [
5858
"retry~=0.9.2",
5959
]
6060
redis = [
61-
"stac-fastapi-core[redis]==6.8.1",
61+
"stac-fastapi-core[redis]==6.9.0",
6262
]
6363
server = [
6464
"uvicorn[standard]~=0.23.0",

stac_fastapi/elasticsearch/stac_fastapi/elasticsearch/app.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -244,7 +244,7 @@
244244
app_config = {
245245
"title": os.getenv("STAC_FASTAPI_TITLE", "stac-fastapi-elasticsearch"),
246246
"description": os.getenv("STAC_FASTAPI_DESCRIPTION", "stac-fastapi-elasticsearch"),
247-
"api_version": os.getenv("STAC_FASTAPI_VERSION", "6.8.1"),
247+
"api_version": os.getenv("STAC_FASTAPI_VERSION", "6.9.0"),
248248
"settings": settings,
249249
"extensions": extensions,
250250
"client": CoreClient(
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
"""library version."""
2-
__version__ = "6.8.1"
2+
__version__ = "6.9.0"

stac_fastapi/opensearch/pyproject.toml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,8 @@ keywords = [
2828
]
2929
dynamic = ["version"]
3030
dependencies = [
31-
"stac-fastapi-core==6.8.1",
32-
"sfeos-helpers==6.8.1",
31+
"stac-fastapi-core==6.9.0",
32+
"sfeos-helpers==6.9.0",
3333
"opensearch-py~=2.8.0",
3434
"opensearch-py[async]~=2.8.0",
3535
"uvicorn~=0.23.0",
@@ -49,15 +49,15 @@ dev = [
4949
"httpx>=0.24.0,<0.28.0",
5050
"redis~=6.4.0",
5151
"retry~=0.9.2",
52-
"stac-fastapi-core[redis]==6.8.1",
52+
"stac-fastapi-core[redis]==6.9.0",
5353
]
5454
docs = [
5555
"mkdocs~=1.4.0",
5656
"mkdocs-material~=9.0.0",
5757
"pdocs~=1.2.0",
5858
]
5959
redis = [
60-
"stac-fastapi-core[redis]==6.8.1",
60+
"stac-fastapi-core[redis]==6.9.0",
6161
]
6262
server = [
6363
"uvicorn[standard]~=0.23.0",

stac_fastapi/opensearch/stac_fastapi/opensearch/app.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -243,7 +243,7 @@
243243
app_config = {
244244
"title": os.getenv("STAC_FASTAPI_TITLE", "stac-fastapi-opensearch"),
245245
"description": os.getenv("STAC_FASTAPI_DESCRIPTION", "stac-fastapi-opensearch"),
246-
"api_version": os.getenv("STAC_FASTAPI_VERSION", "6.8.1"),
246+
"api_version": os.getenv("STAC_FASTAPI_VERSION", "6.9.0"),
247247
"settings": settings,
248248
"extensions": extensions,
249249
"client": CoreClient(
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
"""library version."""
2-
__version__ = "6.8.1"
2+
__version__ = "6.9.0"

stac_fastapi/sfeos_helpers/pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ keywords = [
2929
]
3030
dynamic = ["version"]
3131
dependencies = [
32-
"stac-fastapi.core==6.8.1",
32+
"stac-fastapi.core==6.9.0",
3333
]
3434

3535
[project.urls]

0 commit comments

Comments
 (0)