// - a qualifier in between "qb" (inclusive) and "qd4" (exclusive).
final ArrayList<ScanFilter> filters = new ArrayList<ScanFilter>(2);
filters.add(new ColumnRangeFilter("qb", true, "qd4", false));
filters.add(new KeyRegexpFilter("fl[12]$"));
// Filtered out as we're looking due to qualifier being out of range:
final PutRequest put1 = new PutRequest(table, "fl1", family, "qa1", "v1");
// Kept by the filter:
final PutRequest put2 = new PutRequest(table, "fl1", family, "qb2", "v2");
// Filtered out because the row key doesn't match the regexp:
final PutRequest put3 = new PutRequest(table, "fl1a", family, "qb3", "v3");
// Kept by the filter:
final PutRequest put4 = new PutRequest(table, "fl2", family, "qc4", "v4");
// Filtered out because the qualifier is on the exclusive upper bound:
final PutRequest put5 = new PutRequest(table, "fl2", family, "qd5", "v5");
// Filtered out because the qualifier is past the upper bound:
final PutRequest put6 = new PutRequest(table, "fl2", family, "qd6", "v6");
Deferred.group(Deferred.group(client.put(put1), client.put(put2),
client.put(put3)),
Deferred.group(client.put(put4), client.put(put5),
client.put(put6))).join();
final Scanner scanner = client.newScanner(table);