2012-10-06 66 views
3

試圖編寫一個查詢,該查詢將使用astyanax客戶端和RowSliceQuery在列族中的所有行進行分頁。Astyanax鍵範圍查詢

keyspace.prepareQuery(COLUMN_FAMILY).getKeyRange(null, null, null, null, 100); 

使用hector成功完成此操作,其中第一次調用是使用null開始和結束鍵完成的。在檢索第一頁後,我使用結果中的最後一個鍵來查詢第二頁等。這是使用hector的第一頁的代碼。

HFactory.createRangeSlicesQuery(keyspace, 
LongSerializer.get(), new CompositeSerializer(), 
BytesArraySerializer.get()) 
.setColumnFamily(COLUMN_FAMILY) 
.setRange(null, null, false, 100).setRowCount(100); 

現在,當我試圖用astyanax我得到關於空和非null鍵和令牌錯誤做到這一點。不確定在此查詢中使用什麼標記。此外,我可以使用allRows(),但希望使用鍵範圍查詢來做到這一點,因爲它給了我更多的靈活性。

有沒有人有使用astyanax鍵範圍查詢的例子?我無法在「入門」文檔或網絡中的任何其他地方找到示例。

謝謝! Anton

回答

-1

檢查此示例代碼。我希望這段代碼能幫助你進行分頁。

IndexQuery<String, String> query = keyspace 
    .prepareQuery(CF_STANDARD1).searchWithIndex() 
    .setRowLimit(10).autoPaginateRows(true).addExpression() 
    .whereColumn("Index2").equals().value(42); 

最佳,

+0

不,他想分頁行鍵,不做索引搜索。 –

0

什麼你指的是getRowRange方法:但是所使用的ByteOrderedPartitioner時,這隻有

keyspace.prepareQuery(CF_STANDARD1) 
    .getRowRange(startKey, endKey, startToken, endToken, count) 

注意。由於默認情況下Cassandra使用Murmur3Partitioner,這通常不起作用。建議使用索引來完成此操作。 Astyanax還提供reverse index search配方,該配方利用第二列系列將您的密鑰存儲爲列,以便對原始數據進行有效的範圍搜索。