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

バニラカラムファミリーでこれを直接行うことはできません。Cassandraは、デフォルトでは、キーまたはキー範囲についてのみクエリを実行できます。これは、列にセカンダリインデックスを作成することで実現できます

次のようなCQLクエリを実行して、2つのインデックスを作成します。

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 に答える