Releases: stac-utils/stac-fastapi-elasticsearch-opensearch
Releases · stac-utils/stac-fastapi-elasticsearch-opensearch
v4.2.0
What's Changed
Added
- Added dynamic queryables mapping for search and aggregations #375
- Added configurable landing page ID
STAC_FASTAPI_LANDING_PAGE_ID
#352 - Added support for
S_CONTAINS
,S_WITHIN
,S_DISJOINT
spatial filter operations #371 - Introduced the
DATABASE_REFRESH
environment variable to control whether database operations refresh the index immediately after changes. If set totrue
, changes will be immediately searchable. If set tofalse
, changes may not be immediately visible but can improve performance for bulk operations. If set towait_for
, changes will wait for the next refresh cycle to become visible. #370 - Added the
ENABLE_TRANSACTIONS_EXTENSIONS
environment variable to enable or disable the Transactions and Bulk Transactions API extensions. When set tofalse
, endpoints provided byTransactionsClient
andBulkTransactionsClient
are not available. This allows for flexible deployment scenarios and improved API control. #374
Changed
- Refactored CRUD methods in
TransactionsClient
to use thevalidate_refresh
helper method for consistent and reusable handling of therefresh
parameter. #370
Fixed
- Fixed an issue where some routes were not passing the
refresh
parameter fromkwargs
to the database logic, ensuring consistent behavior across all CRUD operations. #370
New Contributors
- @TravisYeah made their first contribution in #372
Full Changelog: v4.1.0...v4.2.0
v4.1.0
v4.1.0
Added
- Added logging to bulk insertion methods to provide detailed feedback on errors encountered during operations. #364
- Introduced the
RAISE_ON_BULK_ERROR
environment variable to control whether bulk insertion methods raise exceptions on errors (true
) or log warnings and continue processing (false
). #364 - Added code coverage reporting to the test suite using pytest-cov. #87
Changed
- Updated dynamic mapping for items to map long values to double versus float. #326
- Extended Datetime Search to search on start_datetime and end_datetime as well as datetime fields. #182
- Changed item update operation to use Elasticsearch index API instead of delete and create for better efficiency and atomicity. #75
- Bulk insertion via
BulkTransactionsClient
now strictly validates all STAC Items using the Pydantic model before insertion. Any invalid item will immediately raise aValidationError
, ensuring consistent validation with single-item inserts and preventing invalid STAC Items from being stored. This validation is enforced regardless of theRAISE_ON_BULK_ERROR
setting. #368
Fixed
- Refactored
create_item
andupdate_item
methods to share unified logic, ensuring consistent conflict detection, validation, and database operations. #368
New Contributors
- @johnmichaelmurner made their first contribution in #326
Full Changelog: v4.0.0...v4.1.0
v4.0.0
What's Changed
Added
- Support for dynamically-generated queryables based on Elasticsearch/OpenSearch mappings, with extensible metadata augmentation #351
- Included default queryables configuration for seamless integration. #351
- Added support for high-performance direct response mode for both Elasticsearch and Opensearch backends, controlled by the
ENABLE_DIRECT_RESPONSE
environment variable. When enabled (ENABLE_DIRECT_RESPONSE=true
), endpoints return Starlette Response objects directly, bypassing FastAPI's jsonable_encoder and Pydantic serialization for significantly improved performance on large search responses. Note: In this mode, all FastAPI dependencies (including authentication, custom status codes, and validation) are disabled for all routes. Default isfalse
for safety. A warning is logged at startup if enabled. See issue #347 and PR #359. - Added robust tests for the
ENABLE_DIRECT_RESPONSE
environment variable, covering both Elasticsearch and OpenSearch backends. Tests gracefully handle missing backends by attempting to import both configs and skipping if neither is available. #359
Changed
- Refactored database logic to reduce duplication #351
- Replaced
fastapi-slim
withfastapi
dependency #351 - Changed minimum Python version to 3.9 #354
- Updated stac-fastapi api, types, and extensions libraries to 5.1.1 from 3.0.0 and made various associated changes #354
- Changed makefile commands from 'docker-compose' to 'docker compose' #354
- Updated package names in setup.py files to use underscores instead of periods for PEP 625 compliance #358
- Changed
stac_fastapi.opensearch
tostac_fastapi_opensearch
- Changed
stac_fastapi.elasticsearch
tostac_fastapi_elasticsearch
- Changed
stac_fastapi.core
tostac_fastapi_core
- Updated all related dependencies to use the new naming convention
- Changed
- Renamed
docker-compose.yml
tocompose.yml
to align with Docker Compose V2 conventions #358 - Removed deprecated
version
field from all compose files #358 - Updated
STAC_FASTAPI_VERSION
environment variables to 4.0.0 in all compose files #362 - Bumped version from 4.0.0a2 to 4.0.0 for the PEP 625 compliant release #362
- Updated dependency requirements to use compatible release specifiers (~=) for more controlled updates while allowing for bug fixes and security patches #358
- Removed elasticsearch-dsl dependency as it's now part of the elasticsearch package since version 8.18.0 #358
- Updated test suite to use
httpx.ASGITransport(app=...)
for FastAPI app testing (removes deprecation warning). #359 - Updated stac-fastapi parent libraries to 5.2.0. #359
- Migrated Elasticsearch index template creation from legacy
put_template
to composableput_index_template
API indatabase_logic.py
. This resolves deprecation warnings and ensures compatibility with Elasticsearch 7.x and 8.x. #359 - Updated all Pydantic models to use
ConfigDict
instead of class-basedConfig
for Pydantic v2 compatibility. This resolves deprecation warnings and prepares for Pydantic v3. #359 - Migrated all Pydantic
@root_validator
validators to@model_validator
for Pydantic v2 compatibility. #359 - Migrated startup event handling from deprecated
@app.on_event("startup")
to FastAPI's recommended lifespan context manager. This removes deprecation warnings and ensures compatibility with future FastAPI versions. #361 - Refactored all boolean environment variable parsing in both Elasticsearch and OpenSearch backends to use the shared
get_bool_env
utility. This ensures robust and consistent handling of environment variables such asES_USE_SSL
,ES_HTTP_COMPRESS
, andES_VERIFY_CERTS
across both backends. #359
Fixed
- Improved performance of
mk_actions
andfilter-links
methods #351 - Fixed inheritance relating to BaseDatabaseSettings and ApiBaseSettings #355
- Fixed delete_item and delete_collection methods return types #355
- Fixed inheritance relating to DatabaseLogic and BaseDatabaseLogic, and ApiBaseSettings #355
New Contributors
Full Changelog: v3.2.5...v4.0.0
v4.0.0a2
What's Changed
- Enable direct response, stac-fastapi 5.2.0, deprecation warnings by @jonhealy1 in #359
Full Changelog: v4.0.0a1...v4.0.0a2
v4.0.0a1
What's Changed
- Update package names for Pep625 compliance by @jonhealy1 in #358
Full Changelog: v4.0.0a0...v4.0.0a1
v4.0.0a0
What's Changed
- Zero-config dynamically-generated queryables, Performance fixes by @Zaczero in #351
- Update stac-fastapi parent libraries to 5.1.1 by @jonhealy1 in #354
- Inherit from Base Database Logic by @jonhealy1 in #355
New Contributors
Full Changelog: v3.2.5...v4.0.0a0
v3.2.5
What's Changed
- Option to configure multiple Elasticsearch/OpenSearch hosts and enable
http_compress
by @StijnCaerts in #349 - update to v3.2.5 by @jonhealy1 in #350
Full Changelog: v3.2.4...v3.2.5
v3.2.4
What's Changed
- Support Py3.13 by @mo-dkrz in #338
- Update version to v3.2.4 by @jonhealy1 in #339
Full Changelog: v3.2.3...v3.2.4
v3.2.3
What's Changed
- Adding note on the use of the default
*
use in route authentication dependecies by @rhysrevans3 in #325 - Fix IsNull operator by @jamesfisher-geo in #330
- Allow capitals in item index aliases by @rhysrevans3 in #329
- update for v3.2.3 by @jonhealy1 in #333
Full Changelog: v3.2.2...v3.2.3
v3.2.2
What's Changed
- Update for pep625 - pypi deprecation warnings by @jonhealy1 in #317
- fix: use base64 encoded JSON string of sort keys as pagination token by @StijnCaerts in #323
- Release v3.2.2 by @jonhealy1 in #324
Full Changelog: v3.2.1...v3.2.2