public override IResponse RefreshFromConnection(ElasticClient cli) { var health = cli.Health(HealthLevel.Shards); if (health.IsValid) { Name = health.ClusterName; TotalNodeCount = health.NumberOfNodes; DataNodeCount = health.NumberOfDataNodes; ActiveShards = health.ActiveShards; ActivePrimaryShards = health.ActivePrimaryShards; InitializingShards = health.InitializingShards; RelocatingShards = health.RelocatingShards; UnassignedShards = health.UnassignedShards; StringStatus = health.Status; Indices = health.Indices.Select(i => new NodeIndexInfo { Name = i.Key, StringStatus = i.Value.Status, NumberOfShards = i.Value.NumberOfShards, NumberOfReplicas = i.Value.NumberOfReplicas, ActiveShards = i.Value.ActiveShards, ActivePrimaryShards = i.Value.ActivePrimaryShards, InitializingShards = i.Value.InitializingShards, RelocatingShards = i.Value.RelocatingShards, UnassignedShards = i.Value.UnassignedShards, Shards = i.Value.Shards.Select(s => new NodeIndexShardInfo { Name = s.Key, StringStatus = s.Value.Status, PrimaryActive = s.Value.PrimaryActive, ActiveShards = s.Value.ActiveShards, InitializingShards = s.Value.InitializingShards, RelocatingShards = s.Value.RelocatingShards, UnassignedShards = s.Value.UnassignedShards }).ToList() }).OrderBy(i => { int j; return int.TryParse(i.Name, out j) ? j : 0; }).ToList(); } return health; }