Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在cassandra复合列上使用hector进行切片查询_Cassandra_Slice - Fatal编程技术网

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

在cassandra复合列上使用hector进行切片查询,cassandra,slice,Cassandra,Slice,需要一些关于基于复合列筛选的帮助 由于某种原因,我无法在复合柱的第二部分进行过滤- create column family xxx with comparator= 'CompositeType(TimeUUIDType, UTF8Type, UTF8Type)' and default_validation_class = 'UTF8Type'; 一行中的数据- primaryKey-uuid1:A:123 | uuid2:A:123 | uuid3:B:234 | uuid4:C:555

需要一些关于基于复合列筛选的帮助

由于某种原因,我无法在复合柱的第二部分进行过滤-

create column family xxx with comparator= 'CompositeType(TimeUUIDType, UTF8Type, UTF8Type)' and default_validation_class = 'UTF8Type';
一行中的数据-

primaryKey-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());
    }
SliceQuery SliceQuery=HFactory
.createSliceQuery(键空间、ss、cs、ss);
sliceQuery.setColumnFamily(“xxx”);
sliceQuery.setKey(primaryKey);
ColumnSiceIterator csIterator=新的ColumnSiceIterator(sliceQuery、startcomposite、endComposite、false);
while(csIterator.hasNext()){
HColumn next=csIterator.next();
System.out.println(next.getName());
System.out.println(next.getValue());
}

不奇怪为什么它会返回结果,因为您使用了
大于等于

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

正如我前面提到的,与-endComposite.addComponent(1,“A”,相等)的结果相同,即-uuid1:A:123 | uuid2:A:123 | uuid3:B:234