在cassandra复合列上使用hector进行切片查询

ej83mcc0  于 2021-06-15  发布在  Cassandra
关注(0)|答案(2)|浏览(360)

需要一些基于复合列的过滤帮助。
由于某种原因,我无法在复合柱的第二部分进行过滤-

create column family xxx with comparator= 'CompositeType(TimeUUIDType, UTF8Type, UTF8Type)' and default_validation_class = 'UTF8Type';

一行中的数据-
主键-uuid1:a:123 | uuid2:a:123 | uuid3:b:234 | uuid4:c:555

Composite startComposite = new Composite();
startcomposite.addComponent(0,uuidStart,EQUAL)
Composite endComposite = new Composite();
endComposite.addComponent(0,uuidEnd,EQUAL)

上面给出了基于uuidstart和uuidend值的正确结果
e、 g.uuid1:a:123 | uuid2:a:123 | uuid3:b:234
现在如果我只想要第二部分为“a”的列-

Composite startComposite = new Composite();
startcomposite.addComponent(0,uuidStart,EQUAL)
startcomposite.addComponent(1,"A",EQUAL)
Composite endComposite = new Composite();
endComposite.addComponent(0,uuidEnd,EQUAL)
endComposite.addComponent(1,"A",EQUAL) OR  endComposite.addComponent(1,"A",GREATER_THAN_EQUAL)

它给了我-uuid1:a:123 | uuid2:a:123 | uuid3:b:234
我在期待-uuid1:a:123 | uuid2:a:123
有什么问题吗。。。。
我使用的代码-

SliceQuery<String, Composite, String> sliceQuery = HFactory
            .createSliceQuery(keyspace, ss, cs, ss);
    sliceQuery.setColumnFamily("xxx");
    sliceQuery.setKey(primaryKey);

ColumnSliceIterator<String, Composite, String> csIterator = new ColumnSliceIterator<String, Composite, String>(sliceQuery, startcomposite, endComposite, false);

    while (csIterator.hasNext()) {
        HColumn<Composite, String> next = csIterator.next();
        System.out.println(next.getName());
        System.out.println(next.getValue());
    }
fcy6dtqo

fcy6dtqo1#

既然您使用了 GREATER_THAN_EQUAL .

e37o9pze

e37o9pze2#

对于要切片的复合材料的所有部分,需要具有相同的值。所以改变了顺序。

相关问题