0

私はスーパーカラムファミリーを持っており、次のようにクエリを実行するとすべてがうまく機能します:

private static Cluster cluster = HFactory.getOrCreateCluster("cluster1", "localhost:9160");
private static Keyspace keyspace = HFactory.createKeyspace("keyspace1",cluster);
private static Serializer se = StringSerializer.get();
SuperColumnQuery<String, String, String, String> scq = HFactory.createSuperColumnQuery(keyspace, se, se, se, se);
scq.setColumnFamily("step_wise_stats")
.setKey("1001")
.setSuperName("124");
QueryResult<HSuperColumn<String, String, String>> qres = scq.execute();
System.out.println(qres.get());

しかし、キー 1001 の下には、125、126 などのスーパー ネームがさらにあります。それらも動的です (これらの名前は事前にわかりません)。それらすべてを照会するにはどうすればよいですか?

4

1 に答える 1

0

専門家やドキュメントの多くは、複合列を使用する方がスーパー列よりもはるかに優れていると示唆しています。これは、二次インデックスがないためです...可能であれば複合列を使用してください。値を試してMultigetSubSliceQuery、以下のコードを変更すると、必要な結果を生成するためのプログラミング作業が増える可能性があります

ArrayList<String> listco = new ArrayList<String>();
        listco.add("1001");


listco.add("1002");

MultigetSubSliceQuery<String,String, String, String> rangeSlicesQuery =
                HFactory.
                createMultigetSubSliceQuery(keyspace,stringSerializer,    stringSerializer, stringSerializer, stringSerializer);

rangeSlicesQuery.setColumnFamily("step_wise_stats");
rangeSlicesQuery.setSuperColumn("your super column");

rangeSlicesQuery.setKeys(listco);
rangeSlicesQuery.setRange("", "", false, 1000);
QueryResult<Rows<String, String, String>> result = rangeSlicesQuery.execute();
于 2013-06-17T06:30:20.597 に答える