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查询记录,然后进一步检查发布日期(时间戳值)。据我了解:http://www.datastax.com/dev/blog/whats-new-cassandra-07-secondary-indexes ,这应该很容易实现,因为我首先按行键查询,然后按发布日期缩小范围。
但是如何在赫克托耳中做到这一点呢?
使用SliceQuery
不起作用。我知道有 IndexedSliceQuery
但我没有设置辅助索引(如上图所示)。尽管如此,是否正确并且必须使用 IndexedSliceQuery (即使我没有辅助索引)??
谢谢 马库斯
最佳答案
如果您知道需要按发布日期查询数据,那么使用 Apache Cassandra,您应该以这种方式存储它。
这可以通过两种方式完成: - 调整上面列族定义中的元数据以包含发布日期的索引:
update column family Records with column_metadata=[{column_name: releasedate, validation_class: LongType, index_name:releasedate_idx, index_type:0}];
- 或者创建一个附加列族,该列族使用发布日期作为键,并将键存储到记录列族作为列名。这基本上与上面的二级索引定义执行相同的操作,但使管理更新和查询的过程更加手动。
我建议使用第一种方法,让您可以访问 IndexedSlicesQuery 及其所有优点。
关于java - Cassandra -赫克托 : Search by Row-Key but filter by further expression?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6291025/