### Elasticsearch Version

8.8.1+ but probably all versions

### Installed Plugins

_No response_

### Java Version

_bundled_

### OS Version

cloud

### Problem Description

This is a follow-up of [#97370](https://github.com/elastic/elasticsearch/issues/97370). 

In a case where disk spaces are reaching limits, if ILM suddenly tries to move a lot of hot shards to cold/frozen shards, it can tip the cluster health to RED because a lot of cold/frozen shards may be created and stay unassigned as long as there is not enough disk space. However, this is not a suitable indicator for service unavailability, since the data is still safely in the respective hot shards that are becoming cold/frozen, and will remain there until the cold/frozen shards are assigned so that searches can still search them.

Thus the [Health Report API](https://www.elastic.co/guide/en/elasticsearch/reference/8.8/health-api.html) should not return RED for unassigned cold/frozen shards of ILM moves.

### Steps to Reproduce

In a case where disk spaces are reaching limits, if ILM suddenly tries to move a lot of hot shards to cold/frozen shards, it can tip the cluster health to RED because a lot of cold/frozen shards may be created and stay unassigned (as long as there is not enough disk space).

### Logs (if relevant)

_No response_
server/src/main/java/org/elasticsearch/cluster/routing/allocation/ShardsAvailabilityHealthIndicatorService.java
NAME,
        "explain_allocations",
        "Elasticsearch isn't allowed to allocate some shards from these indices to any of the nodes in the cluster.",
        "Diagnose the issue by calling the allocation explain API for an index [GET _cluster/allocation/explain]. Choose a node to which "
            + "you expect a shard to be allocated, find this node in the node-by-node explanation, and address the reasons which prevent "
            + "Elasticsearch from allocating the shard.",
        DIAGNOSE_SHARDS_ACTION_GUIDE
    );
    public static final String FIX_DELAYED_SHARDS_GUIDE = "https://ela.st/fix-delayed-shard-allocation";
    public static final Diagnosis.Definition DIAGNOSIS_WAIT_FOR_OR_FIX_DELAYED_SHARDS = new Diagnosis.Definition(
        NAME,
        "delayed_shard_allocations",
        "Elasticsearch is not allocating some shards because they are marked for delayed allocation. Shards that have become "
            + "unavailable are usually marked for delayed allocation because it is more efficient to wait and see if the shards return "
            + "on their own than to recover the shard immediately.",
        "Elasticsearch will reallocate the shards when the delay has elapsed. No action is required by the user.",
        FIX_DELAYED_SHARDS_GUIDE
    );
    public static final String WAIT_FOR_INITIALIZATION_GUIDE = "https://ela.st/wait-for-shard-initialization";
    public static final Diagnosis.Definition DIAGNOSIS_WAIT_FOR_INITIALIZATION = new Diagnosis.Definition(
        NAME,
        "initializing_shards",
        "Elasticsearch is currently initializing the unavailable shards. Please wait for the initialization to finish.",
        "The shards will become available as long as the initialization completes. No action is required by the user, you can"
            + " monitor the progress of the initializing shards at "
            + WAIT_FOR_INITIALIZATION_GUIDE
            + ".",
        WAIT_FOR_INITIALIZATION_GUIDE
    );
    public static final String ENABLE_INDEX_ALLOCATION_GUIDE = "https://ela.st/fix-index-allocation";