value :="aaaaa"
comparable := filter.NewByteArrayComparable([]byte(value))var fc filter.Comparator
// 二进制比较器(精确匹配)
fc = filter.NewBinaryComparator(comparable)// LongComparator
fc = filter.NewLongComparator(comparable)// 前缀比较
fc = filter.NewBinaryPrefixComparator(comparable)// BitComparator 字节比较
bitwiseOpInt :=1// 1 AND, 2 OR, 3 XOR
bitwiseOp := filter.BitComparatorBitwiseOp(bitwiseOpInt)
fc = filter.NewBitComparator(bitwiseOp, comparable)// NullComparator
fc = filter.NewNullComparator()// 正则比较/*
* 2: 忽略大小写, 4: 忽略空白和注释,
* 8: 多行匹配,默认情况下以行为单位匹配
* 32:使 . 能匹配所有符号
* 更多值参见JAVA正则flags值
*/
PatternFlags :=2
Charset :="utf-8"// 字符集, 用于将行键转换为字符串以便与正则进行匹配
Engin :="JAVA"// 正则引擎, JAVA, JONI
fc = filter.NewRegexStringComparator(value, PatternFlags, Charset, Engine)// 子串比较
fc = filter.NewSubstringComparator(value)/*
* 0: 小于, 1: 小于等于, 2: 等于, 3: 不等于,
* 4: 大于等于, 5: 大于, 6: 无操作
*/
CompareOp :=2var f *filter.CompareFilter
f = filter.NewCompareFilter(filter.CompareType(CompareOp), fc)
5.3.2 行过滤器
var f filter.Filter
// 限制返回条数
f = filter.NewPageFilter(100)// 前缀过滤
f = filter.NewPrefixFilter([]byte("prefix"))// QualifierFilter
f = filter.NewQualifierFilter(f.(*filter.CompareFilter))// 随机过滤//设定一个概率值, 返回对应百分比的数据量(非严格执行)//设为0则全部过滤, 设为1则全部包含
f = filter.NewRandomRowFilter(0.8)// 使用比较过滤器过滤RowKey
f = filter.NewRowFilter(f.(*filter.CompareFilter))// TimestampsFilter
f = filter.NewTimestampsFilter(r.Timestamps)// 使用比较过滤器过滤value
f = filter.NewValueFilter(f.(*filter.CompareFilter))// 范围过滤, 后两个参数分别表示返回结果是否包含startRow和stopRow
f = filter.NewRowRange([]byte(startRow),[]byte(stopRow),true,false)// 组合范围过滤器var rowRangeList *filter.RowRange
f = filter.NewMultiRowRangeFilter(rowRangeList)//scan操作时不包含截止行, 使用此过滤器可以将stopRow含在结果内
f = filter.NewInclusiveStopFilter([]byte(stopRow))// FuzzyRowFiltervar bbp []*filter.BytesBytesPair
bbp =append(bbp, filter.NewBytesBytesPair([]byte,[]byte))
f = filter.NewFuzzyRowFilter(bbp)
5.3.3 列过滤器
// 限制返回的列的数量
f = filter.NewColumnCountGetFilter(10)// 列分页
f = filter.NewColumnPaginationFilter(limit, offset,[]byte(columnOffset))// 通过前缀过滤列
f = filter.NewColumnPrefixFilter([]byte(prefix))// 列范围匹配过滤器// 后两个参数控制是否包含边界
f = filter.NewColumnRangeFilter([]byte(minColumn),[]byte(maxColumn),true,false)// DependentColumnFilter
f = filter.NewDependentColumnFilter(f.(*filter.CompareFilter),[]byte(c.ColumnFamily),[]byte(c.ColumnQualifier),true)//多列前缀匹配
f = filter.NewMultipleColumnPrefixFilter(sortedPrefix)// SingleColumnValueFilter
f = filter.NewSingleColumnValueFilter([]byte(ColumnFamily),[]byte(ColumnQualifier), compareOP, fc,
FilterIfMissing, LatestVersionOnly)// SingleColumnValueExcludeFilter
f = filter.NewSingleColumnValueExcludeFilter(f.(*filter.SingleColumnValueFilter))//返回的数据不包括实际的单元值,只包含行键与列
f = filter.NewKeyOnlyFilter(true)//只返回每一行的第一列
f = filter.NewFirstKeyOnlyFilter()//通过设置一组需要匹配的列,只要匹配到任意一个列就会停止这一行的扫描操作进行下一行的扫描
f = filter.NewFirstKeyValueMatchingQualifiersFilter([][]byte)
5.4.3 列族过滤器
f = filter.NewFamilyFilter(f.(*filter.CompareFilter))