对于类似下面的情况
CREATE TABLE test (
foo text,
bar set<text>,
other int
stuff ascii
PRIMARY KEY(foo, bar)
);
查询
SELECT * FROM test WHERE (foo, bar) IN (("foo", "foo"))
如果foo == "foo" and bar.contains("foo")
或foo == "foo" or bar.contains("foo")
或某些完全不同的内容返回某些内容?
我想foo == "foo" or bar.contains("foo")
我应该怎么做?
是否可以使用cassandra 3和scala / java中的dataStax查询构建器构建包含多列的查询?
答案 0 :(得分:2)
不幸的是,在Cassandra中还没有OR条款。该支持作为SASI索引的一部分添加:https://docs.datastax.com/en/cql/3.3/cql/cql_using/useSASIIndex.html
您可以在此处查看进度:https://issues.apache.org/jira/browse/CASSANDRA-10765
由于您对只能使用群集列找到的行感兴趣,因此您将依赖此查询的某种辅助索引。