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;
            }