Cassandra where子句将SLICE和IN限制组合在一起

时间:2017-08-11 12:10:40

标签: cassandra cql

我想使用群集密钥上的过滤器来选择数据。

特别是我需要在两个群集键上使用过滤器:

  • 应使用切片过滤器限制第一个群集密钥(例如>,> =,<,< =)
  • 应使用IN过滤器
  • 限制第二个群集密钥

使用最新版本的cassandra(3.11.0),这样的过滤器不起作用。 顺便说一句:在文档中没有找到这个特殊的限制。

以下是重现此问题的步骤:

DROP TABLE IF EXISTS testing.t1

CREATE TABLE IF NOT EXISTS testing.t1 (
c1 text,
c2 int,
c3 text,
PRIMARY KEY (c1, c2, c3));

INSERT INTO testing.t1 (c1,c2,c3) VALUES ('key1',100,'clust1')
INSERT INTO testing.t1 (c1,c2,c3) VALUES ('key1',110,'clust1')
INSERT INTO testing.t1 (c1,c2,c3) VALUES ('key1',120,'clust2')
INSERT INTO testing.t1 (c1,c2,c3) VALUES ('key1',130,'clust3')
INSERT INTO testing.t1 (c1,c2,c3) VALUES ('key2',160,'clust2')

SELECT * FROM testing.t1
WHERE c1 = 'key1'
AND c2 > 100
AND c3 IN ('clust2','clust3')
ALLOW FILTERING

查询生成以下错误:

  

code = 2200 [无效查询] message =“索引列不支持IN限制”

你能帮我解释一下这个问题吗?

是否有特殊原因不允许使用此类过滤器或它是过去的残余?

谢谢!

0 个答案:

没有答案