1、比较过滤器
行键过滤器 RowFilter
Filter filter1 = new RowFilter(CompareOperator.EQUAL, new BinaryComparator("q4000".getBytes()));
scan.setFilter(filter1);
列族过滤器 FamilyFilter
Filter filter1 = new FamilyFilter(CompareOperator.EQUA, new BinaryComparator(Bytes.toBytes(“info")));
scan.setFilter(filter1);
列过滤器 QualifierFilter
Filter filter = new QualifierFilter(CompareOperator.LESS_OR_EQUAL, new BinaryComparator(Bytes.toBytes("name")));
scan.setFilter(filter1);
值过滤器 ValueFilter
Filter filter = new ValueFilter(CompareOperator.EQUAL,new BinaryComparator(Bytes.toBytes("love4000")));
scan.setFilter(filter1);
值过滤器 DependentColumnFilter-(ValueFilter的加强版)
Filter dependentColumnFilter = new DependentColumnFilter(
Bytes.toBytes("info"),
Bytes.toBytes("name"),
false,
CompareOperator.EQUAL,
new BinaryPrefixComparator(Bytes.toBytes("love4000")));
scan.setFilter(filter1);
2、专用过滤器
单列列值过滤器 SingleColumnValueFilter
SingleColumnValueFilter singleColumnValueFilter = new SingleColumnValueFilter(
"info".getBytes(),
"name".getBytes(),
CompareOperator.EQUAL,
new SubstringComparator("love3000"));
singleColumnValueFilter.setFilterIfMissing(true);
scan.setFilter(singleColumnValueFilter);
单列列值排除器 SingleColumnValueExcludeFilter
SingleColumnValueExcludeFilter 继承自上面的 SingleColumnValueFilter,过滤行为与其相反。
行键前缀过滤器 PrefixFilter
Filter filter = new PrefixFilter(Bytes.toBytes("q10"));
scan.setFilter(filter);
列名前缀过滤器 ColumnPrefixFilter
Filter filter = new ColumnPrefixFilter(Bytes.toBytes("name"));
scan.setFilter(filter);
分页过滤器 PageFilter
Filter filter = new PageFilter(10);
scan.setFilter(filter);
scan.withStartRow(Bytes.toBytes("2"));
3、包装过滤器
时间过滤器 TimestampsFilter
List<Long> list = new ArrayList<>();
list.add(1591191281943L);
TimestampsFilter timestampsFilter = new TimestampsFilter(list);
scan.setFilter(timestampsFilter);
SkipFilter过滤器
Filter filter1 = new ValueFilter(CompareOperator.NOT_EQUAL,
new BinaryComparator(Bytes.toBytes("love4000")));
Filter filter2 = new SkipFilter(filter1);
scan.setFilter(filter2);
FilterList
以上都是讲解单个过滤器的作用,当需要多个过滤器共同作用于一次查询的时候,就需要使用 FilterList。FilterList 支持通过构造器或者 addFilter 方法传入多个过滤器
List<Filter> filters = new ArrayList<Filter>();
Filter filter1 = new RowFilter(CompareOperator.GREATER_OR_EQUAL,
new BinaryComparator(Bytes.toBytes("XXX")));
filters.add(filter1);
Filter filter2 = new RowFilter(CompareOperator.LESS_OR_EQUAL,
new BinaryComparator(Bytes.toBytes("YYY")));
filters.add(filter2);
Filter filter3 = new QualifierFilter(CompareOperator.EQUAL,
new RegexStringComparator("ZZZ"));
filters.add(filter3);
FilterList filterList = new FilterList(filters);
Scan scan = new Scan();
scan.setFilter(filterList);
列分页过滤器:ColumnPaginationFilter(int limit,int off)