假设我有一个包含以下列的表ClientHeaders
| UUID | Cliend_id | IP | Country | Date |其中UUID是主键。
我想使用这个查询:
select * from ClientHeaders where Client_id = "123";我如何使用hector的slicequery来实现。
我知道如果是这样的话: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子句功能?
发布于 2013-06-12 16:38:56
为此,您必须使用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();https://stackoverflow.com/questions/17059350
复制相似问题