Problems with refactoring FieldCache to DocValues

I'm currently refacoring from ES 1.5 to ES 2.4. But I encounter some problems with the removal of the FieldCache in Lucene 5.

Steps taken:

  1. added the doc_value:true in the mapping (fieldtype is string)
  2. Rebuild the index completely
  3. Load the docvalues in the doSetNextReader(LeafReaderContext context) from a custom collector class like this
BinaryDocValues  sids = DocValues.getBinary(context.reader(), "id");

or like this

BinaryDocValues ids = context.reader().getBinaryDocValues("id");

but in both cases I get the following exception:

RemoteTransportException[[ws6711][][geohashcluster[s]]]; nested: IllegalStateException[unexpected docvalues type SORTED_SET for field 'id' (expected one of [BINARY, SORTED]). Use UninvertingReader or index with docvalues.];
Caused by: java.lang.IllegalStateException: unexpected docvalues type SORTED_SET for field 'id' (expected one of [BINARY, SORTED]). Use UninvertingReader or index with docvalues.
	at org.apache.lucene.index.DocValues.checkField(
	at org.apache.lucene.index.DocValues.getBinary(
	at org.elasticsearch.action.geohashcluster.GeohashClusterCollector.doSetNextReader(
	at org.elasticsearch.action.geohashcluster.TransportGeohashClusterAction.shardOperation(
	at org.elasticsearch.action.geohashcluster.TransportGeohashClusterAction.shardOperation(
	at org.elasticsearch.transport.RequestHandlerRegistry.processMessageReceived(
	at org.elasticsearch.transport.TransportService$4.doRun(
	at java.util.concurrent.ThreadPoolExecutor.runWorker(
	at java.util.concurrent.ThreadPoolExecutor$

Does anyone know what I'm doing wrong?

I've found the problem, apparently I should use it like this:

SortedSetDocValues ids = context.reader().getSortedSetDocValues("id");

Why does this work and the BinaryDocValues doesn't?