我有以下代码段。复合柱有两个组件。如果我只知道第一个组件,是否可以检索列?在某种意义上,对复合材料的某些组件(尤其是最后一个组件)应用一些稀释卡选举。
感谢。
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);
答案 0 :(得分:0)
您不必指定合成中的所有组件。你可以错过最后的(但不是中间或开头),并对这些进行范围查询,而不是像在普通列上将空范围传入get_slice查询一样。
在您的示例中,如果使用
进行查询Composite start = new Composite();
start.addComponent(0, start0, ComponentEquality.EQUAL);
Composite end = new Composite();
end.add(0, end0, ComponentEquality.GREATER_THAN_EQUAL);
你会得到从start0开始到end0的所有内容。 ComponentEquality标志设置是包括还是排除结束范围。以上包括开始和结束。您将使用ComponentEquality.GREATER_THAN_EQUAL排除开头;排除最终使用ComponentEquality.EQUAL。