### Description

I noticed that when I run `GET my_ilm_index/_ilm/explain`, the order of the returned JSON seems without much logic.

In my case, we have 18 underlying indices, and they are returned as
```
my_ilm_index-000010
my_ilm_index-000011
my_ilm_index-000012
my_ilm_index-000001
my_ilm_index-000006
my_ilm_index-000017
my_ilm_index-000018
my_ilm_index-000007
my_ilm_index-000008
my_ilm_index-000009
my_ilm_index-000002
my_ilm_index-000013
my_ilm_index-000014
my_ilm_index-000003
my_ilm_index-000015
my_ilm_index-000004
my_ilm_index-000016
my_ilm_index-000005
```

While of course, strictly speaking, json has no order, it's still inconvenient to just get a quick look at what's happening.

Could this get an ordering?

**Details:**
Elastic 7.16.2 in docker
Kibana 7.16.2 in docker
Request done via Kibana/Dev tools/console (on Chrome, on Windows 10)
x-pack/plugin/ilm/src/main/java/org/elasticsearch/xpack/ilm/action/TransportExplainLifecycleAction.java
IndexMetadata idxMetadata = state.metadata().index(index);
            final IndexLifecycleExplainResponse indexResponse;
            try {
                indexResponse = getIndexLifecycleExplainResponse(
                    idxMetadata,
                    request.onlyErrors(),
                    request.onlyManaged(),
                    indexLifecycleService,
                    xContentRegistry
                );
            } catch (IOException e) {
                listener.onFailure(new ElasticsearchParseException("failed to parse phase definition for index [" + index + "]", e));
                return;
            }
            if (indexResponse != null) {
                indexResponses.put(indexResponse.getIndex(), indexResponse);
            }
        }
        listener.onResponse(new ExplainLifecycleResponse(indexResponses));
    }
    @Nullable
    static IndexLifecycleExplainResponse getIndexLifecycleExplainResponse(
        IndexMetadata indexMetadata,
        boolean onlyErrors,
        boolean onlyManaged,
        IndexLifecycleService indexLifecycleService,
        NamedXContentRegistry xContentRegistry
    ) throws IOException {
        Settings idxSettings = indexMetadata.getSettings();
        LifecycleExecutionState lifecycleState = indexMetadata.getLifecycleExecutionState();