@Override public Call<List<List<Span>>> getTraces(Iterable<String> traceIds) {
    Set<String> normalizedTraceIds = new LinkedHashSet<>();
    for (String traceId : traceIds) {
      // make sure we have a 16 or 32 character trace ID
      traceId = Span.normalizeTraceId(traceId);

      // Unless we are strict, truncate the trace ID to 64bit (encoded as 16 characters)
      if (!strictTraceId && traceId.length() == 32) traceId = traceId.substring(16);

      normalizedTraceIds.add(traceId);
    }

    if (normalizedTraceIds.isEmpty()) return Call.emptyList();
    SearchRequest request =
      SearchRequest.create(asList(allSpanIndices)).terms("traceId", normalizedTraceIds);
    return search.newCall(request, BodyConverters.SPANS).map(groupByTraceId);
  }
To not produce unnecessarily long queries, we don't look back further than first ES support
zipkin-storage/elasticsearch/src/main/java/zipkin2/elasticsearch/ElasticsearchSpanStore.java