Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/13.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 最后一个组件上的复合类型通配符_Cassandra_Hector - Fatal编程技术网

Cassandra 最后一个组件上的复合类型通配符

Cassandra 最后一个组件上的复合类型通配符,cassandra,hector,Cassandra,Hector,我有以下代码段。复合柱有两个组件。如果我只知道第一个组件,是否可以检索列?从某种意义上说,对组合的某些组件(尤其是最后一个组件)应用一些dilcard 谢谢 Mutator<String> mutator = HFactory.createMutator(keyspace, stringSerializer); String key="TX:512"; String CF="StateNpaIndexStatic"; HColumnImpl<Compo

我有以下代码段。复合柱有两个组件。如果我只知道第一个组件,是否可以检索列?从某种意义上说,对组合的某些组件(尤其是最后一个组件)应用一些dilcard

谢谢

 Mutator<String> mutator = HFactory.createMutator(keyspace, stringSerializer);
    String key="TX:512";
    String CF="StateNpaIndexStatic";
    HColumnImpl<Composite, String> column = new HColumnImpl<Composite, String>(cs, StringSerializer.get());
    column.setClock(keyspace.createClock());
    Composite dc = new Composite();
    dc.add(0, "review");
    dc.add(1, "T23333");
    column.setName(dc);       
    column.setValue("aa");
    mutator.addInsertion(key, CF, column);
    mutator.execute();
     Composite start = new Composite();
    start.add(0, start0);
    start.add(1,"*");
    Composite end = new Composite();
    end.add(0, end0);
    end.add(1, "*");

    SliceQuery<String,Composite, String> sliceQuery =HFactory.createSliceQuery(keyspace,stringSerializer, CompositeSerializer.get(), StringSerializer.get());
    sliceQuery.setColumnFamily(CF);
    sliceQuery.setKey(key);
    sliceQuery.setRange(start, start, false, 1);
    QueryResult<ColumnSlice<Composite, String>> result = sliceQuery.execute();
    System.out.println("Result :"+result.get().getColumns().size()+"=========="+result);
Mutator Mutator=HFactory.createMutator(键空间,stringSerializer);
String key=“TX:512”;
字符串CF=“StateNpaIndexStatic”;
HColumnImpl column=新的HColumnImpl(cs,StringSerializer.get());
column.setClock(keyspace.createClock());
复合dc=新复合();
dc.添加(0,“审查”);
dc.添加(1,“T23333”);
column.setName(dc);
列。设定值(“aa”);
变体.附加插入(键,CF,列);
mutator.execute();
复合开始=新复合();
开始。添加(0,开始0);
开始。添加(1,“*”);
复合材料端=新复合材料();
结束。添加(0,end0);
完。添加(1,“*”);
SliceQuery SliceQuery=HFactory.createSliceQuery(键空间、stringSerializer、CompositeSerializer.get()、stringSerializer.get());
sliceQuery.setColumnFamily(CF);
sliceQuery.setKey(key);
sliceQuery.setRange(start,start,false,1);
QueryResult result=sliceQuery.execute();
System.out.println(“结果:+Result.get().getColumns().size()+”================+Result);

您不必指定组合中的所有组件。您可能会错过末尾(而不是中间或开头)的部分,并对这些部分执行范围查询,就像将空范围传递到普通列上的get_slice查询中一样

在您的示例中,如果您使用

Composite start = new Composite();
start.addComponent(0, start0, ComponentEquality.EQUAL);
Composite end = new Composite();
end.add(0, end0, ComponentEquality.GREATER_THAN_EQUAL);

你会得到从开始到结束的一切。ComponentEquality标志设置是否包括或排除结束范围。以上内容包括开始和结束。您将以ComponentEquality.GREATER_THAN_EQUAL排除开头;要排除最终使用组件Equality.EQUAL。

谢谢。我尝试了start.addComponent(0,“review”,ComponentEquality.EQUAL)和end.addComponent(0,“review”,ComponentEquality.LESS_小于_EQUAL);但它似乎不起作用。我也试过两边都小于等于。上面的代码有'sliceQuery.setRange(start,start,false,1);'但是应该是'sliceQuery.setRange(start,end,false,1);'。你刚才在用那个密码吗?注意,我还更正了我的帖子-结束范围应该使用大于等于不小于等于。