// 單層:只能全 AND 或全 OR
FilterList list = new FilterList(Operator.MUST_PASS_ALL); // AND
// 或
FilterList list = new FilterList(Operator.MUST_PASS_ONE); // OR
FilterList 可包含 FilterList**,遞迴組合任意邏輯。
// 邏輯:(A AND B) OR (C AND D)
FilterList innerAnd1 = new FilterList(Operator.MUST_PASS_ALL);
innerAnd1.addFilter(filterA);
innerAnd1.addFilter(filterB);
FilterList innerAnd2 = new FilterList(Operator.MUST_PASS_ALL);
innerAnd2.addFilter(filterC);
innerAnd2.addFilter(filterD);
FilterList outerOr = new FilterList(Operator.MUST_PASS_ONE);
outerOr.addFilter(innerAnd1);
outerOr.addFilter(innerAnd2);
scan.setFilter(outerOr);
| FilterList 結構 | SQL 等價 |
|---|---|
| MUST_PASS_ALL (A, B) | A AND B |
| MUST_PASS_ONE (A, B) | A OR B |
| MUST_PASS_ALL ( MUST_PASS_ONE(A,B), C ) | (A OR B) AND C |
SingleColumnValueFilter、PrefixFilter 等原生 Filter。Filter.ReturnCode.INCLUDE_AND_NEXT_COL 跳過剩餘欄位。HBase FilterList **支援巢狀**,透過遞迴組合可實現任意 AND/OR 混合邏輯。設計時注意過濾順序與效能。