private List<Map<String, Object>> getShardInformation(IndexStats stats) { List<Map<String, Object>> shards = Lists.newArrayList(); for (Map.Entry<Integer, IndexShardStats> s : stats.getIndexShards().entrySet()) { Iterator<ShardStats> iter = s.getValue().iterator(); while (iter.hasNext()) { ShardStats ss = iter.next(); Map<String, Object> shard = Maps.newHashMap(); shard.put("node_hostname", cluster.nodeIdToHostName(ss.getShardRouting().currentNodeId())); shard.put("node_name", cluster.nodeIdToName(ss.getShardRouting().currentNodeId())); shard.put("id", ss.getShardId()); shard.put("node_id", ss.getShardRouting().currentNodeId()); shard.put("primary", ss.getShardRouting().primary()); shard.put("is_initializing", ss.getShardRouting().initializing()); shard.put("is_started", ss.getShardRouting().started()); shard.put("is_unassigned", ss.getShardRouting().unassigned()); shard.put("is_relocating", ss.getShardRouting().relocating()); shard.put("relocating_to", cluster.nodeIdToName(ss.getShardRouting().relocatingNodeId())); shards.add(shard); } } return shards; }