### Elasticsearch Version

8.6.1, also tested on 8.5.3

### Installed Plugins

_No response_

### Java Version

_bundled_

### OS Version

Ubuntu 20.04.5 LTS

### Problem Description

Attempting to update force_merge_index for searchable snapshot actions within phases inside an ILM policy appear to ignore the update.
Version of the policy remains the same if checked after.
A workaround is changing at least one other element of the policy then the changes are accepted and the policy version is updated.

### Steps to Reproduce

```
# test create policy 
PUT /_ilm/policy/test
{
  "policy": {
    "phases": {
      "cold": {
        "min_age": "5d",
        "actions": {
          "searchable_snapshot": {
            "snapshot_repository": "found-snapshots",
            "force_merge_index": true
          },
          "set_priority": {
            "priority": 0
          }
        }
      },
      "warm": {
        "min_age": "3d",
        "actions": {
          "forcemerge": {
            "max_num_segments": 1
          },
          "set_priority": {
            "priority": 50
          }
        }
      },
      "hot": {
        "min_age": "0ms",
        "actions": {
          "rollover": {
            "max_primary_shard_size": "50gb",
            "max_age": "30d"
          },
          "set_priority": {
            "priority": 100
          }
        }
      },
      "frozen": {
        "min_age": "25d",
        "actions": {
          "searchable_snapshot": {
            "snapshot_repository": "found-snapshots",
            "force_merge_index": true
          }
        }
      }
    }
  }
}


# check policy
GET /_ilm/policy/test

# update policy to have force merge set to false for cold and frozen phases
PUT /_ilm/policy/test
{
  "policy": {
    "phases": {
      "cold": {
        "min_age": "5d",
        "actions": {
          "searchable_snapshot": {
            "snapshot_repository": "found-snapshots",
            "force_merge_index": false
          },
          "set_priority": {
            "priority": 0
          }
        }
      },
      "warm": {
        "min_age": "3d",
        "actions": {
          "forcemerge": {
            "max_num_segments": 1
          },
          "set_priority": {
            "priority": 50
          }
        }
      },
      "hot": {
        "min_age": "0ms",
        "actions": {
          "rollover": {
            "max_primary_shard_size": "50gb",
            "max_age": "30d"
          },
          "set_priority": {
            "priority": 100
          }
        }
      },
      "frozen": {
        "min_age": "25d",
        "actions": {
          "searchable_snapshot": {
            "snapshot_repository": "found-snapshots",
            "force_merge_index": false
          }
        }
      }
    }
  }
}

# check policy - version is still 1 and no changes have taken affect.
GET /_ilm/policy/test


# update policy to have force merge set to false for cold and frozen phases, but also change at least 1 other element of the policy, in this case one of the order values.
PUT /_ilm/policy/test
{
  "policy": {
    "phases": {
      "cold": {
        "min_age": "5d",
        "actions": {
          "searchable_snapshot": {
            "snapshot_repository": "found-snapshots",
            "force_merge_index": false
          },
          "set_priority": {
            "priority": 0
          }
        }
      },
      "warm": {
        "min_age": "3d",
        "actions": {
          "forcemerge": {
            "max_num_segments": 1
          },
          "set_priority": {
            "priority": 51
          }
        }
      },
      "hot": {
        "min_age": "0ms",
        "actions": {
          "rollover": {
            "max_primary_shard_size": "50gb",
            "max_age": "30d"
          },
          "set_priority": {
            "priority": 100
          }
        }
      },
      "frozen": {
        "min_age": "25d",
        "actions": {
          "searchable_snapshot": {
            "snapshot_repository": "found-snapshots",
            "force_merge_index": false
          }
        }
      }
    }
  }
}

# check policy - version is 2 and changes have taken effect.
GET /_ilm/policy/test

# you could also reset the priority back to what it was if needed
PUT /_ilm/policy/test
{
  "policy": {
    "phases": {
      "cold": {
        "min_age": "5d",
        "actions": {
          "searchable_snapshot": {
            "snapshot_repository": "found-snapshots",
            "force_merge_index": false
          },
          "set_priority": {
            "priority": 0
          }
        }
      },
      "warm": {
        "min_age": "3d",
        "actions": {
          "forcemerge": {
            "max_num_segments": 1
          },
          "set_priority": {
            "priority": 50
          }
        }
      },
      "hot": {
        "min_age": "0ms",
        "actions": {
          "rollover": {
            "max_primary_shard_size": "50gb",
            "max_age": "30d"
          },
          "set_priority": {
            "priority": 100
          }
        }
      },
      "frozen": {
        "min_age": "25d",
        "actions": {
          "searchable_snapshot": {
            "snapshot_repository": "found-snapshots",
            "force_merge_index": false
          }
        }
      }
    }
  }
}

# check policy - version is 3 and changes have taken effect again.
GET /_ilm/policy/test
```

### Logs (if relevant)

_No response_
x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ilm/SearchableSnapshotAction.java
steps.add(deleteSourceIndexStep);
        steps.add(swapAliasesAndDeleteSourceIndexStep);
        return steps;
    }
    /**
     * Resolves the prefix to be used for the mounted index depending on the provided key
     */
    static String getRestoredIndexPrefix(StepKey currentKey) {
        if (currentKey.phase().equals(TimeseriesLifecycleType.FROZEN_PHASE)) {
            return PARTIAL_RESTORED_INDEX_PREFIX;
        } else {
            return FULL_RESTORED_INDEX_PREFIX;
        }
    }
    
    static MountSearchableSnapshotRequest.Storage getConcreteStorageType(StepKey currentKey) {
        if (currentKey.phase().equals(TimeseriesLifecycleType.FROZEN_PHASE)) {
            return MountSearchableSnapshotRequest.Storage.SHARED_CACHE;
        } else {
            return MountSearchableSnapshotRequest.Storage.FULL_COPY;
        }
    }
    @Override
    public boolean isSafeAction() {
        return true;
    }
    @Override
    public String getWriteableName() {
        return NAME;
    }