Hector:如何查询复合类型的部分

时间:2011-11-08 17:50:50

标签: timestamp cassandra hector

我使用CompositeType存储的数据如下所示:

RowKey: 101390
=> (column=1320987600000:P:350.0:symbol, value=AAPL/F6LbE.O, timestamp=1320771711561000)
=> (column=1320987600000:P:355.0:symbol, value=AAPL/F6LfE.O, timestamp=1320771711569000)
=> (column=1320987600000:P:360.0:symbol, value=AAPL/F6LjE.O, timestamp=1320771711576000)
=> (column=1320987600000:P:365.0:symbol, value=AAPL/F6LnE.O, timestamp=1320771711586000)
=> (column=1320987600000:P:370.0:symbol, value=AAPL/F6LrE.O, timestamp=1320771711592000)
=> (column=1320987600000:P:460.0:symbol, value=AAPL/F6LzF.O, timestamp=1320771711607000)
=> (column=1320987600000:C:350.0:symbol, value=AAPL/FuLbE.O, timestamp=1320771712117000)
=> (column=1320987600000:C:355.0:symbol, value=AAPL/FuLfE.O, timestamp=1320771712120000)
=> (column=1320987600000:C:360.0:symbol, value=AAPL/FuLjE.O, timestamp=1320771712123000)
=> (column=1320987600000:C:365.0:symbol, value=AAPL/FuLnE.O, timestamp=1320771712128000)

复合材料有四个部分:[timestamp:type:price:attribute_name]

是否可以使用SliceQuery查询1,2或所有组件?

  • 例如我想从时间戳T1查询 - > T2(工作正常)
  • 还需要说时间戳T1 - > T2和Type =“C”且仅“C”
  • 时间戳T1 - > T2,Type =“C”AND price =“365.0”

是否可以以这种方式查询复合材料的某些部分?到目前为止,在我的测试中,我无法将复合似乎进行比较,好像它只是长字节数组 - 而不是单个组件。

2 个答案:

答案 0 :(得分:4)

从ML回答: 这是一个半开始的例子。应该 在评论中足以让你前进: https://github.com/zznate/cassandra-tutorial/blob/master/src/main/java/com/datastax/tutorial/StaticCompositeIndex.java

如果有帮助,请告诉我。

答案 1 :(得分:0)

是的,您可以搜索复合材料的部分内容。如果您使用的是Cassandra 0.8.1及更高版本,则需要在架构中将比较器指定为“CompositeType”。以下是使用CompositeType编程范围查询的完整教程: http://randomizedsort.blogspot.com/2011/11/cassandra-range-query-using.html