Ani*_*nil 7 java sql cassandra nosql
表:
CREATE TABLE TEST_PAYLOAD
(
TIME_STAMP timestamp,
TYPE text,
PRIMARY KEY (TIME_STAMP)
);
time_stamp | type
--------------------------+----------
2013-05-15 00:00:00-0700 | sometext
2013-05-16 00:00:00-0700 | sometext
2013-05-17 00:00:00-0700 | sometext
SELECT * FROM TEST_PAYLOAD WHERE TIME_STAMP>='2013-05-15 00:00:00-0700';
code=2200 [Invalid query] message="Only EQ and IN relation are supported on the partition key (unless you use the token() function)"
Run Code Online (Sandbox Code Playgroud)
它不适用于>或任何范围选择,而它适用于=就索引而言它只有一个主键没有分区键.为什么它要求token().
我想检索相对范围可以只有日期或日期与时间不同db存在特定时间戳.
Vis*_*ohn 17
我想你对Cassandra术语有点困惑.
请参考这里
partition key: The first column declared in the PRIMARY KEY definition
即,当你创建这样的表时
CREATE TABLE table {
key1,
key2,
key3,
PRIMARY KEY (key1, key2, key3)
}
Run Code Online (Sandbox Code Playgroud)
key1被称为分区键和key2,key3被称为簇键.
在您的情况下,您没有群集密钥,因此您声明的单个主键成为分区键.
还应对群集密钥执行范围查询(<,>).
如果你没有任何其他主键候选人,我认为你应该像这样改造你的表
CREATE TABLE TEST_PAYLOAD
(
BUCKET varchar,
TIME_STAMP timestamp,
TYPE text,
PRIMARY KEY (BUCKET, TIME_STAMP)
);
Run Code Online (Sandbox Code Playgroud)
对于BUCKET,您可以提供年份或年份和月份组合.所以你的密钥看起来像2013年,2014年,06-2014,10-2014等.
因此,当查询转到所需的桶并进行范围扫描时,如TIME_STAMP> ='2013-05-15 00:00:00-0700'
| 归档时间: |
|
| 查看次数: |
7846 次 |
| 最近记录: |