Suppose I have a table ClientHeaders with following columns
| UUID | Cliend_id | IP | Country | Date |
where UUID is primary key.
I want to use this query:
select * from ClientHeaders where Client_id = "123";
How can I do it using slicequery of hector.
I know if it was like this : select * from ClientHeaders where UUID= "123";
Following would have done the task:
sliceQuery.setColumnFamily("ClientHeaders");
sliceQuery.setKey("123");
sliceQuery.setRange("", "", false, 5);
QueryResult<ColumnSlice<String, String>> result = sliceQuery.execute();
because UUID is primary key so sliceQuery.setKey("123");
works with primary key,
Is there any way I can do the where clause functionality from a non primary key?
For that you have to use 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();