我有一个问题要问Cassandra收藏。
我想做一个与集合搜索一起工作的查询。
CREATE TABLE rd_db.test1 (
testcol3 frozen<set<text>> PRIMARY KEY,
testcol1 text,
testcol2 int
)
表结构是。。。
以及
这是目录。
在这种情况下,我想让一个cql查询在set列上有可选的选项值。
如果是sql,testcol3不是集合,
select * from rd.db.test1 where testcol3 = 4 or testcol3 = 5
但它是cql和collection。。我尽力了
select * from test1 where testcol3 contains '4' OR testcol3 contains '5' ALLOW FILTERING ;
select * from test1 where testcol3 IN ('4','5') ALLOW FILTERING ;
但这两个查询不起作用。。。
请帮忙。。。
1条答案
按热度按时间n1bvdmb61#
这对您不起作用,原因有多种:
根本没有
OR
cql中的操作只能对分区键的值进行完全匹配(
testcol3
)尽管可以为集合类型的字段创建辅助索引,但不可能为分区键的值创建索引
您需要更改数据模型,但需要提前知道正在执行的查询。从简单地查看您的数据模型开始,我建议将set字段卷展到多个行中,各个字段对应于各个分区。
但我想建议在datastax学院网站上学习ds201和ds220课程,以便更好地了解cassandra是如何工作的,以及如何为它建模数据。