1

假设我有一个包含以下列的表 ClientHeaders

| UUID | Cliend_id | IP | Country | Date |

其中 UUID 是主键。

我想使用这个查询:

select * from ClientHeaders where Client_id = "123";

如何使用赫克托的切片查询来做到这一点。

我知道是不是这样:select * from ClientHeaders where UUID= "123";

以下将完成任务:

sliceQuery.setColumnFamily("ClientHeaders");
sliceQuery.setKey("123");
sliceQuery.setRange("", "", false, 5);
QueryResult<ColumnSlice<String, String>> result = sliceQuery.execute(); 

因为 UUID 是主键,所以sliceQuery.setKey("123");与主键一起使用,有什么方法可以从非主键执行 where 子句功能?

4

1 回答 1

2

为此,您必须使用 IndexedSlicesQuery

StringSerializer stringSerializer = StringSerializer.get();
BytesArraySerializer bas = BytesArraySerializer.get();


IndexedSlicesQuery<String, String, byte[]> indexedSlicesQuery = 
            HFactory.createIndexedSlicesQuery("your keyspace", stringSerializer, stringSerializer, bas);

indexedSlicesQuery.setColumnFamily("ClientHeaders");
indexedSlicesQuery.setColumnNames("UUID","Cliend_id","IP","Country","Date");
indexedSlicesQuery.addEqualsExpression("Client_id", stringSerializer.toBytes("123"));

QueryResult<OrderedRows<String, String, byte[]>> result = indexedSlicesQuery.execute();
于 2013-06-12T08:38:55.500 回答