code: private String normalizeExceptionKey(String str) {
      str = URL_SCHEME_AND_AUTHORITY_PATTERN.matcher(str).replaceAll("$1<redacted>$3");
      str = SHARD_AND_REPLICA_PATTERN.matcher(str).replaceAll("$1<redacted>$2<redacted>");
      str = EXCEPTION_HOST_PATTERN.matcher(str).replaceAll("$1<redacted>$3");
      str = COLLECTION_AND_SLICE_PATTERN.matcher(str).replaceAll("$1<redacted>");
      str = NOW_TIMESTAMP_PATTERN.matcher(str).replaceAll("$1<redacted>");
      str = normalizeWhitespace(str);
      str = omitPackageName(str, "java.io.");
      str = omitPackageName(str, "java.net.");
      str = omitPackageName(str, "org.apache.solr.client.solrj.impl.");
      //str = omitPackageName(str, "org.apache.http.client.");    
      return str;
    }
docs: Coalesce exception messages containing HTTP REST calls to all server shards into a single bucket.
  This greatly reduces the amount of metric spam.
  Example: https://vb0706.foo.bar.com:8983 --> https://<redacted>.foo.bar.com:8983
  Example: UnknownHostException: vb0706.foo.bar.com -> UnknownHostException: <redacted>.foo.bar.com
  Example: insertAndQueryTweets_shard30_replica91 --> insertAndQueryTweets_shard<redacted>_replica<redacted>
  Example: collection: collection1 slice: shard130 --> collection: collection1 slice: shard<redacted>
  Example: &NOW=1448689151133 -> &NOW=<redacted>