Java 如何在HBase筛选器中混合必须通过所有和必须通过一个?

Java 如何在HBase筛选器中混合必须通过所有和必须通过一个?,java,hbase,Java,Hbase,我有一个带有列前缀过滤器和多个模糊过滤器的HBase扫描,如下所示: FilterList filterList = new FilterList(); filterList.addFilter(new FuzzyFilter(...)); filterList.addFilter(new FuzzyFilter(...)); filterList.addFilter(new ColumnPrefixFilter(...)); Scan s = new Scan(); s.setFilter(f

我有一个带有
列前缀过滤器
和多个
模糊过滤器
的HBase扫描,如下所示:

FilterList filterList = new FilterList();
filterList.addFilter(new FuzzyFilter(...));
filterList.addFilter(new FuzzyFilter(...));
filterList.addFilter(new ColumnPrefixFilter(...));
Scan s = new Scan();
s.setFilter(filterList);
有没有一种方法可以在
FuzzyFilter
s上使用
MUST\u PASS\u ONE
,然后在
ColumnPrefixFilter
上使用
MUST\u PASS\u ALL
并结合
FuzzyFilter
s

所以我在找这样的东西:


columnPrifyFilter
和(
FuzzyFilter
FuzzyFilter

我们可以实现两种不同的过滤器列表来实现这一点。请参阅下面的代码

    FilterList mainFilter = new FilterList(FilterList.Operator.MUST_PASS_ALL);
    FilterList subFilter = new FilterList(FilterList.Operator.MUST_PASS_ONE);

    subFilter.addFilter(new FuzzyRowFilter(null));
    subFilter.addFilter(new FuzzyRowFilter(null));

    mainFilter.addFilter(new ColumnPrefixFilter(Bytes.toBytes("d")));
    mainFilter.addFilter(subFilter);

您可以使用“必须通过”运算符定义主筛选器,并使用“必须通过”运算符定义子筛选器。现在将筛选条件添加到子筛选器中,然后将此子筛选器添加回主筛选器。

FilterList
本身就是一个
筛选器,所以只需将它们组合起来即可

FilterList fuzzy = new FilterList(MUST_PASS_ONE, fuzzy1, fuzzy2);
FilterList main = new FilterList(MUST_PASS_ALL, prefixFilter, fuzzy);
s.setFilter(main);