fix #53: shardsize to string, fix nil pointer, add cold phase (#54)

This commit is contained in:
T. von Dein
2026-06-26 11:25:30 +02:00
parent e3aa50af37
commit bbe72a474b
3 changed files with 48 additions and 8 deletions

View File

@@ -144,7 +144,7 @@ func IlmCreate(conf *cfg.Config) *cli.Command {
Usage: "hot phase: rollover after", Usage: "hot phase: rollover after",
Destination: &conf.Ilm.HotRolloverMaxAge, Destination: &conf.Ilm.HotRolloverMaxAge,
}, },
&cli.Int64Flag{ &cli.StringFlag{
Name: "hot-rollover-max-primary-shard-size", Name: "hot-rollover-max-primary-shard-size",
Usage: "hot phase: max primary shard size", Usage: "hot phase: max primary shard size",
Destination: &conf.Ilm.HotRolloverMaxPrimaryShardSize, Destination: &conf.Ilm.HotRolloverMaxPrimaryShardSize,
@@ -210,6 +210,11 @@ func IlmCreate(conf *cfg.Config) *cli.Command {
Usage: "frozen phase: min age", Usage: "frozen phase: min age",
Destination: &conf.Ilm.FrozenMinAge, Destination: &conf.Ilm.FrozenMinAge,
}, },
&cli.StringFlag{
Name: "frozen-searchable-snapshot-repo",
Usage: "frozen phase: searchable snapshot repo",
Destination: &conf.Ilm.FrozenSearchableSnapshotRepo,
},
// delete // delete
&cli.StringFlag{ &cli.StringFlag{

View File

@@ -21,7 +21,7 @@ type Ilm struct {
HotMinAge string HotMinAge string
HotRolloverMaxAge string HotRolloverMaxAge string
HotRolloverMaxPrimaryShardSize int64 HotRolloverMaxPrimaryShardSize string
HotRolloverMaxDocs int64 HotRolloverMaxDocs int64
HotReadonly bool HotReadonly bool
@@ -35,7 +35,8 @@ type Ilm struct {
ColdForceMerge int ColdForceMerge int
ColdPriority int ColdPriority int
FrozenMinAge string FrozenMinAge string
FrozenSearchableSnapshotRepo string
DeleteMinAge string DeleteMinAge string
DeleteSearchableSnapshots bool DeleteSearchableSnapshots bool
@@ -47,7 +48,7 @@ func (cfg *Ilm) HaveHot() bool {
return cfg.HotMinAge != "" || return cfg.HotMinAge != "" ||
cfg.HotRolloverMaxAge != "" || cfg.HotRolloverMaxAge != "" ||
cfg.HotRolloverMaxDocs > 0 || cfg.HotRolloverMaxDocs > 0 ||
cfg.HotRolloverMaxPrimaryShardSize > 0 || cfg.HotRolloverMaxPrimaryShardSize != "" ||
cfg.HotReadonly cfg.HotReadonly
} }

View File

@@ -245,7 +245,7 @@ func IlmCreate(conf *cfg.Config, policyname string) error {
haveroll = true haveroll = true
} }
if cfg.HotRolloverMaxPrimaryShardSize != 0 { if cfg.HotRolloverMaxPrimaryShardSize != "" {
rollover.MaxPrimaryShardSize = &cfg.HotRolloverMaxPrimaryShardSize rollover.MaxPrimaryShardSize = &cfg.HotRolloverMaxPrimaryShardSize
} }
@@ -281,16 +281,50 @@ func IlmCreate(conf *cfg.Config, policyname string) error {
phases.PhasesCaster().Warm = &warm phases.PhasesCaster().Warm = &warm
} }
if cfg.HaveCold() {
cold := types.Phase{}
var actions types.IlmActionsVariant = esdsl.NewIlmActions()
if cfg.ColdForceMerge != 0 {
actions.IlmActionsCaster().Forcemerge = &types.ForceMergeAction{MaxNumSegments: cfg.ColdForceMerge}
}
if cfg.ColdMinAge != "" {
cold.MinAge = cfg.ColdMinAge
}
if cfg.ColdPriority != 0 {
actions.IlmActionsCaster().SetPriority = &types.SetPriorityAction{Priority: &cfg.ColdPriority}
}
if cfg.ColdSearchableSnapshotRepo != "" {
actions.IlmActionsCaster().SearchableSnapshot =
&types.SearchableSnapshotAction{SnapshotRepository: cfg.ColdSearchableSnapshotRepo}
}
cold.Actions = actions.IlmActionsCaster()
phases.PhasesCaster().Cold = &cold
}
if cfg.HaveFrozen() { if cfg.HaveFrozen() {
froze := phases.PhasesCaster().Frozen froze := types.Phase{}
var actions types.IlmActionsVariant = esdsl.NewIlmActions()
if cfg.FrozenMinAge != "" { if cfg.FrozenMinAge != "" {
froze.MinAge = cfg.FrozenMinAge froze.MinAge = cfg.FrozenMinAge
} }
if cfg.FrozenSearchableSnapshotRepo != "" {
actions.IlmActionsCaster().SearchableSnapshot =
&types.SearchableSnapshotAction{SnapshotRepository: cfg.FrozenSearchableSnapshotRepo}
}
froze.Actions = actions.IlmActionsCaster()
phases.PhasesCaster().Frozen = &froze
} }
if cfg.HaveDelete() { if cfg.HaveDelete() {
del := phases.PhasesCaster().Delete del := types.Phase{}
delete := types.DeleteAction{} delete := types.DeleteAction{}
var actions types.IlmActionsVariant = esdsl.NewIlmActions() var actions types.IlmActionsVariant = esdsl.NewIlmActions()
@@ -304,7 +338,7 @@ func IlmCreate(conf *cfg.Config, policyname string) error {
actions.IlmActionsCaster().Delete = &delete actions.IlmActionsCaster().Delete = &delete
del.Actions = actions.IlmActionsCaster() del.Actions = actions.IlmActionsCaster()
phases.PhasesCaster().Delete = del phases.PhasesCaster().Delete = &del
} }
put := &putlifecycle.Request{} put := &putlifecycle.Request{}