code: public UNode getShardStats(String shardName) {
          try {
              // Send a GET request to "/{application}/_shards/{shard}"
              StringBuilder uri = new StringBuilder(Utils.isEmpty(m_restClient.getApiPrefix()) ? "" : "/" + m_restClient.getApiPrefix());          			            
              uri.append("/");
              uri.append(Utils.urlEncode(m_appDef.getAppName()));
              uri.append("/_shards/");
              uri.append(shardName);
              RESTResponse response = m_restClient.sendRequest(HttpMethod.GET, uri.toString());
              m_logger.debug("mergeShard() response: {}", response.toString());
              throwIfErrorResponse(response);
              return getUNodeResult(response);
          } catch (Exception e) {
              throw new RuntimeException(e);
          }
      }
docs: Get statistics for the given shard name. Since the response to this command is
  subject to change, the command result is parsed into a UNode, and the root object
  is returned. An exception is thrown if the given shard name does not exist or does
  not have any data.
  
  @param shardName Name of a shard to query.
  @return          Root {@link UNode} of the parsed result.