Java 在hbase中指定多个筛选器

Java 在hbase中指定多个筛选器,java,hbase,Java,Hbase,有没有办法在扫描过程中指定多个过滤器?例如-指定列家庭过滤器和行过滤器 Filter rowFilter = new RowFilter(CompareFilter.CompareOp.EQUAL, new RegexStringComparator( rowFilterString)); Scan s = new Scan(); s.setFilter(rowFilter); 我还

有没有办法在扫描过程中指定多个过滤器?例如-指定
列家庭过滤器
行过滤器

Filter rowFilter =
                new RowFilter(CompareFilter.CompareOp.EQUAL, new RegexStringComparator(
                        rowFilterString));
        Scan s = new Scan();
        s.setFilter(rowFilter);
我还想在
s
中添加一个
ColumnFilter
。但它显然会覆盖最新的过滤器。

您必须创建一个对象,并将所有需要的过滤器添加到该对象中,然后将此
过滤器列表
对象设置为过滤器。您可以使用构造函数或使用
addFilter()
方法将过滤器添加到过滤器列表中

FilterList filterList = new FilterList();
filterList.addFilter(new RowFilter(...));
filterList.addFilter(new ColumnFilter(...));
Scan s = new Scan();
s.setFilter(filterList);

如果要添加多个过滤器,请记住默认情况下filterlist使用

FilterList.Operator.MUST_PASS_ALL
这意味着必须通过所有过滤器(和条件)。 使用


如果要应用或设置筛选器的条件。

可以使用FilterList对象添加筛选器列表,并可以使用ArrayList控制筛选器的顺序。每个FilterList只接受一个运算符[或、和]。但是,可以通过向父筛选器列表添加多个具有自己运算符的筛选器列表实例来创建筛选器列表的层次结构

FilterList filterList = new FilterList();
filterList.addFilter(new RowFilter(...));
filterList.addFilter(new ColumnFilter(...));
Scan s = new Scan();
s.setFilter(filterList);
例如: 过滤器1和过滤器2是两个过滤器列表

FilterList filterList1 = new FilterList(FilterList.Operator.MUST_PASS_ONE,filters_1);
FilterList filterList2 = new FilterList(FilterList.Operator.MUST_PASS_ALL,filters_2);


List<Filter> filterAggregate = new ArrayList<>();
filterAggregate.add(filterList1);
filterAggregate.add(filterList2);

FilterList filterList3 = new FilterList(FilterList.Operator.MUST_PASS_ALL,filterAggregate);
FilterList filterList1=新的FilterList(FilterList.Operator.MUST\u PASS\u ONE,filters\u 1);
FilterList filterList2=新的FilterList(FilterList.Operator.MUST\u PASS\u ALL,filters\u 2);
List filterAggregate=new ArrayList();
filterAggregate.add(过滤器列表1);
过滤器集合。添加(过滤器列表2);
filterlistfilterlist3=新的FilterList(FilterList.Operator.MUST\u PASS\u ALL,filterAggregate);