The index was created without number_of_replicas, so OpenSearch's default
of 1 left an unassignable replica on single-node clusters: the alias was
yellow and quick_search.opensearch reported DEGRADED.
- New config indexReplicas (default null = automatic:
min(maxAutoReplicas, data nodes - 1)) and maxAutoReplicas (default 1).
Zero config gives 0 replicas on one node and 1 on larger clusters.
- New physical indexes get the target; at startup existing indexes are
reconciled with PUT /<index>/_settings when the value differs
(idempotent, logged, failure tolerant, never blocks startup). Indexes
with auto_expand_replicas and OpenSearch Serverless are left alone.
- Status snapshot and quick_search.opensearch health details gain
unassignedReplicaShards, targetReplicas and replicaSettingsFailed.
Yellow on a single node with every primary active is UP with a note;
yellow with an inactive primary or on multiple nodes stays DEGRADED,
red stays DOWN.
- Unit tests (stub server), health/status tests and a Testcontainers
integration test; OpenAPI fragment regenerated.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>