github appbaseio/reactivesearch-api 9.3.0

one day ago

Summary

Feature release adding Elasticsearch Serverless support, including API key upstream authentication, automatic meta index remapping, Serverless-compatible index operations, and client-side index rollover. Also bumps the default version to 9.3.0 and updates the Go build image to 1.26.4.


New features

Elasticsearch Serverless support

ReactiveSearch API can now run against Elasticsearch Serverless clusters.

  • Automatic Serverless detection — Detects Serverless via version.build_flavor from GET / and caches the result for the process lifetime.
  • Meta index remapping — Dot-prefixed internal indices (e.g. .pipelines, .users, .analytics, .logs) are automatically rewritten to rs_* names (e.g. rs_pipelines, rs_users), since Serverless rejects user-created hidden indices. All plugins that use meta indices are updated to resolve names through this layer.
  • Configurable prefix — Set RS_META_INDEX_PREFIX to force an alternate prefix on any cluster (must not start with _, -, or +). When unset, remapping applies only on Serverless.
  • API key upstream auth — Set ES_API_KEY to authenticate to upstream Elasticsearch with Authorization: ApiKey … (recommended for Serverless). ES_CLUSTER_URL must not contain embedded credentials when ES_API_KEY is set. Basic auth via URL credentials remains supported for self-managed clusters.
  • Serverless-compatible index creation — Strips platform-managed settings from index creation bodies on Serverless (index.hidden, shard/replica counts, auto_expand_replicas, etc.) via AdaptIndexBody.
  • Index size via _cat/indices — Reindex and rollover logic uses _cat/indices for store size where _stats is unavailable on Serverless. Adds ParseStoreSize for human-readable size strings (1.2kb, 100mb, etc.).
  • Client-side index rollover — Serverless rejects conditional rollover (max_age, max_docs, max_size) in the API body. On Serverless, ReactiveSearch evaluates those thresholds client-side and calls rollover without conditions when any threshold is met (OR semantics). Applies to analytics, logs, pipeline logs, and pipeline invocations. Cron schedules (@midnight, @hourly) and post-rollover cleanup (retain latest two backing indices) are unchanged.

Rollover thresholds (Serverless defaults)

Meta index max_age (non-production) max_age (production)
rs_analytics 30 days 30 days
rs_logs 7 days 30 days
rs_pipeline_logs 7 days 30 days
rs_pipeline_invocations 3 days 7 days

Configuration

Variable Description
ES_API_KEY API key for upstream Elasticsearch auth (e.g. Serverless). Mutually exclusive with credentials in ES_CLUSTER_URL.
RS_META_INDEX_PREFIX Force meta index prefix (e.g. rs_) on any cluster; auto-applied on Serverless when unset.

See docs/env-vars.md for full details on meta index naming and Serverless rollover behavior.


Build & release

  • Default version bumped from 9.2.09.3.0 (Makefile, Dockerfile).
  • Go build image updated from golang:1.26.0golang:1.26.4.
  • Binary publish workflow migrated to build from the OSS reactivesearch-api repo (drops confidential rs-api-server clone; packages build/ artifacts only).

Don't miss a new reactivesearch-api release

NewReleases is sending notifications on new releases.