Scan scan = new Scan();
scan.setAttribute(Constants.INDEX_EXPRESSION, IndexUtils.toBytes(multiIndexExpression));
FilterList outerFL = new FilterList(Operator.MUST_PASS_ALL);
FilterList fl = new FilterList(Operator.MUST_PASS_ALL);
Filter filter = new SingleColumnValueFilter(FAMILY1, QUALIFIER2, CompareOp.EQUAL, value2);
fl.addFilter(filter);
filter = new SingleColumnValueFilter(FAMILY1, QUALIFIER3, CompareOp.GREATER_OR_EQUAL, value3_1);
fl.addFilter(filter);
filter = new SingleColumnValueFilter(FAMILY1, QUALIFIER3, CompareOp.LESS, value3_2);
fl.addFilter(filter);
outerFL.addFilter(fl);
FilterList innerFL = new FilterList(Operator.MUST_PASS_ONE);
innerFL.addFilter(new SingleColumnValueFilter(FAMILY1, QUALIFIER1, CompareOp.EQUAL, value1));
innerFL.addFilter(new SingleColumnValueFilter(FAMILY2, QUALIFIER1, CompareOp.EQUAL, value4));
outerFL.addFilter(innerFL);
scan.setFilter(outerFL);
ScanFilterEvaluator evaluator = new ScanFilterEvaluator();
List<IndexSpecification> indices = new ArrayList<IndexSpecification>();