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)