Versions (relevant - OpenSearch/Dashboard/Server OS/Browser): 3.6
Hello everyone,
I am designing a backup and retention workflow in OpenSearch and need advice on the best architectural approach.
Our Setup & Requirements:
- We have time-based indices with a strict naming convention:
kuber-YYYY.MM.DD.*. - This generates exactly 30 daily indices per month.
- Instead of running a separate snapshot for each individual daily index (which would create 30 separate snapshots a month and clutter our repository tracking), I want to group a whole month’s worth of indices into one single snapshot once a month.
The Desired Workflow (Example for April 1st):
- On April 1st, an automated job triggers.
- It targets all 30 daily indices from January (matching the pattern
kuber-2026.01.*). - It creates one comprehensive monthly snapshot named exactly
kuber-2026.01.full. - Only after the snapshot status is 100% SUCCESS, all these 30 January indices must be set to
read_onlyand then permanently deleted from the cluster to free up space.
My Question:
Since native ISM (Index State Management) policies operate on a per-index level, it is tricky to coordinate a single snapshot for a group of 30 indices followed by their safe deletion.
What is the recommended way to implement this natively in OpenSearch? Should I look into Snapshot Management (SM) with dynamic date math, or is it better to orchestrate this via an external script (like a Cron job/Lambda calling the OpenSearch REST API)? If anyone has a working example or pattern for this specific workflow, I would appreciate your guidance!
Thank you!