5

我一直在尝试使用以下命令从 Cassandra 数据库中检索数据:

 select A_NO from Activity where CALL_TYPE IN ('MOC');//here CALL_TYPE is not the row id

但它的显示:

Expected key 'KEY' to be present in where clause for 'Activity'

在 cassandra 中是否不可能在非主键的帮助下过滤数据?

4

1 回答 1

6

您不能直接在 vanilla 列族上执行此操作。Cassandra 默认情况下只让您查询键或键范围。您可以通过在列上创建二级索引来完成此操作

您将像这样运行 CQL 查询来创建两个索引:

cqlsh> CREATE INDEX state_key ON users (state);
cqlsh> CREATE INDEX birth_year_key ON users (birth_year);

然后像这样查询:

cqlsh> SELECT * FROM users
 ... WHERE gender='f' AND
 ...  state='TX' AND
...  birth_year='1968';

这是关于二级索引的更多信息。

这是有关为此使用 CQL 的文档。

于 2012-04-12T16:18:10.493 回答