【问题标题】:Unable to perform range queries in Cassandra 1.2无法在 Cassandra 1.2 中执行范围查询
【发布时间】:2012-09-26 19:28:59
【问题描述】:

我正在通过 FluentCassandra 和 C# 访问 Cassandra 1.2。我使用了 DataStax 安装包。我遇到的问题是我无法执行下面显示的范围查询。

我尝试了以下表格创建方法:

CREATE TABLE Test (KEY text, p1 int, p2 int, p3 int, p4 int, p5 int, p6 int, 
p7 int, p8 int, data text, PRIMARY KEY (KEY))

CREATE TABLE Test (KEY text, p1 int, p2 int, p3 int, p4 int, p5 int, p6 int, 
p7 int, p8 int, data text, PRIMARY KEY (KEY, p1, p2, p3, p4, p5, p6, p7, p8))

这里是查询:

SELECT Data FROM Test WHERE KEY IN ('           0', '           1', 
'           2', '           3', '           4', '           5', '           6', 
'           7', '           8', '           9', '          10', '          11', 
'          12', '          13', '          14', '          15') AND 
p1 >= 10 AND p1 <= 40 AND p2 >= 20 AND p2 <= 80 AND 
p3 >= 30 AND p3 <= 120 AND p4 >= 40 AND p4 <= 160 AND 
p5 >= 50 AND p5 <= 200 AND p6 >= 60 AND p6 <= 240 AND 
p7 >= 70 AND p7 <= 280 AND p8 >= 80 AND p8 <= 320;

错误是:

"使用 Equal 运算符的 by-columns 子句中没有索引列" / “PRIMARY KEY 部分 p2 不能被限制(前面的部分 p1 是 不受限制或非 EQ 关系)"

我的 ConnectionBuilder:

ConnectionBuilder builder = new ConnectionBuilder(CDBkeyspace, 
new Server("localhost"), true, 0, 100, 0, ConnectionType.Framed, 4096, 
ConsistencyLevel.QUORUM, Apache.Cassandra.ConsistencyLevel.QUORUM, "3.0.0");

我该怎么做?

【问题讨论】:

  • 关于复合列,您应该了解的另一件事是“列切片必须是连续的”因此,p1 > =10 和 p1
  • 根据您和@jbellis 之前的回答,这应该可以。 “连续”听起来我只能在 p1 上过滤。
  • Ya p1 单独 incase = 条件和其他 incase 您单独指定 = 运算符。检查我在上一个问题中的更新

标签: cassandra fluentcassandra


【解决方案1】:

由于错误指定 P2 不能被限制,除非 P1 上有 EQUAL 运算符 直到您指定的最后一个参数之前的所有参数都必须相等,并且只有最后一个参数可以不相等

【讨论】:

  • 不幸的是,情况似乎确实如此。
猜你喜欢
  • 2014-09-15
  • 2012-03-13
  • 2012-01-09
  • 1970-01-01
  • 2015-03-10
  • 2020-06-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多