我创建了一个链式过滤器,如下所示:
Filters.Filter filter =
FILTERS
.condition(
FILTERS
.chain()
.filter(FILTERS.family().exactMatch(columnFamily))
.filter(FILTERS.qualifier().exactMatch("col_a"))
.filter(FILTERS.value().exactMatch("value_a"))
)
.then(FILTERS.pass())
.otherwise(FILTERS.block());
但这只是针对像
'col_a=value_a'
这样的一种情况。如何使用多个过滤器从Bigtable中获取数据?
链式过滤器的行为有所不同。它们仅输出匹配的单元格。因此,我必须在“然后”和“否则”函数中应用“通过”和“阻止”过滤器。
如何为另一列限定符和值添加一个条件?
Filters.Filter filter = FILTERS.chain()
.filter(FILTERS.condition(
FILTERS.chain().filter(FILTERS.qualifier().exactMatch(columnName1))
.filter(FILTERS.value().exactMatch(columnValue))
).then(FILTERS.pass()))
.filter(FILTERS.condition(
FILTERS.chain().filter(FILTERS.qualifier().exactMatch(columnName2))
.filter(FILTERS.value().exactMatch(columnValue2))
).then(FILTERS.pass()))
Query query = Query.create(tableName) // use .prefix() or .rowKey() here to narrow search
.filter(filter)