java - Cassandra -赫克托 : Search by Row-Key but filter by further expression?

标签 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查询记录,然后进一步检查发布日期(时间戳值)。据我了解: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/

相关文章:

cassandra - 如何为列族定义复合键,然后使用 Hector 引用它?

java - 如何使用 Hector 在 Cassandra 中保留新的客户行?

Java springdoc-openapi 在 Swagger UI 示例值中显示 LocalDateTime 字段以及附加日期/时间字段

java - 通过根据您所在的环境传递必需的参数来实例化类

java - 如何在 Google-App 上允许快速发布请求?

java - GridWorld 将花添加到随机位置

database - Cassandra 中的删除读取和删除突变

cassandra - Cassandra中批量修改主键DELETE和INSERT的副作用

java - Cassandra,Titan,致命配置错误

cassandra - Hector为 super cf的子列做incrementCounter