/*
   * (non-Javadoc)
   *
   * @see
   * com.basho.riak.client.raw.RawClient#fetchIndex(com.basho.riak.client.
   * raw.query.IndexQuery)
   */
  public List<String> fetchIndex(IndexQuery indexQuery) throws IOException {
    final MapReduce mr = new IndexMapReduce(this, indexQuery);

    mr.addReducePhase(NamedErlangFunction.REDUCE_IDENTITY, Args.REDUCE_PHASE_ONLY_1);
    // only return the key, to match the http rest api
    mr.addReducePhase(
        new JSSourceFunction("function(v) { return v.map(function(e) { return e[1]; }); }"),
        Args.REDUCE_PHASE_ONLY_1);

    try {
      MapReduceResult result = mr.execute();
      return new ArrayList<String>(result.getResult(String.class));
    } catch (RiakException e) {
      throw new IOException(e);
    }
  }