### 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/qa/multi-node/src/javaRestTest/java/org/elasticsearch/xpack/ilm/ExplainLifecycleIT.java
import org.elasticsearch.common.Strings;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.core.TimeValue;
import org.elasticsearch.test.rest.ESRestTestCase;
import org.elasticsearch.xcontent.XContentBuilder;
import org.elasticsearch.xpack.core.ilm.DeleteAction;
import org.elasticsearch.xpack.core.ilm.LifecycleAction;
import org.elasticsearch.xpack.core.ilm.LifecyclePolicy;
import org.elasticsearch.xpack.core.ilm.LifecycleSettings;
import org.elasticsearch.xpack.core.ilm.Phase;
import org.elasticsearch.xpack.core.ilm.RolloverAction;
import org.elasticsearch.xpack.core.ilm.ShrinkAction;
import org.junit.Before;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
import static org.elasticsearch.xcontent.XContentFactory.jsonBuilder;
import static org.elasticsearch.xpack.TimeSeriesRestDriver.createFullPolicy;
import static org.elasticsearch.xpack.TimeSeriesRestDriver.createIndexWithSettings;
import static org.elasticsearch.xpack.TimeSeriesRestDriver.createNewSingletonPolicy;
import static org.elasticsearch.xpack.TimeSeriesRestDriver.explain;
import static org.elasticsearch.xpack.TimeSeriesRestDriver.explainIndex;
import static org.hamcrest.Matchers.allOf;
import static org.hamcrest.Matchers.greaterThanOrEqualTo;
import static org.hamcrest.Matchers.hasKey;
import static org.hamcrest.Matchers.is;
import static org.hamcrest.Matchers.not;
import static org.hamcrest.Matchers.notNullValue;
import static org.hamcrest.Matchers.nullValue;
public class ExplainLifecycleIT extends ESRestTestCase {