Cassandra - Hector:按行键搜索但过滤表达式?

时间:2011-06-09 09:55:22

标签: java cassandra hector

create column family Records with
          comparator = UTF8Type and
          column_metadata =
          [
            {column_name: name, validation_class: UTF8Type},
            {column_name: label, validation_class: UTF8Type},
            {column_name: releasedate, validation_class: LongType},

我想通过Row-Key查询记录,然后进一步检查releaseate(时间戳值)。据我所知:http://www.datastax.com/dev/blog/whats-new-cassandra-07-secondary-indexes,这很容易实现,因为我首先按行键查询,然后按释放缩小。

但是如何在hector中做到这一点?

使用SliceQuery不起作用。我知道有IndexedSliceQuery但我没有二级索引集(可以看作是abolve)。是neverthelss是否正确并且必须使用IndexedSliceQuery(即使我没有seconary索引)??

由于 马库斯

2 个答案:

答案 0 :(得分:2)

很抱歉,使用Cassandra API目前无法混合服务器端行和列过滤。 (因为它只对保留订单的分区有意义,所以不太可能改变。)

答案 1 :(得分:2)

如果您知道需要按发布日期查询数据,那么使用Apache Cassandra,您应该以这种方式存储它。

这可以通过两种方式完成: - 调整上面列族定义中的元数据,以包括releasedate上的索引:

update column family Records with column_metadata=[{column_name: releasedate, validation_class: LongType, index_name:releasedate_idx, index_type:0}];    
  • 或创建一个使用发布日期作为键的附加列系列,并将键作为列名存储到记录列族中。这基本上与上面的二级索引定义相同,但使管理更新和查询的过程更加手动。

我建议使用第一种方法,让您访问IndexedSlicesQuery及其所有优点。