3

カサンドラテーブルは次のとおりです。

CREATE TABLE Account(
id uuid,
userRef uuid,
name map<text, text>,
dataStatus text,
dataVisibility text,
...
PRIMARY KEY( id, dataStatus, dataVisibility, userRef)
)
CREATE INDEX idx_xxx_account_name ON Account (name);

「名前」は、(コレクション) タイプ「マップ」の cql3 列です。私の質問は: マップ タイプ、つまり名前にセカンダリ インデックスを作成することは可能ですか?

ありがとう。

4

5 に答える 5

1

あなたの質問はかなり古いです。Cassandra 2.1 では、有効な構文は次のとおりです。

CREATE INDEX on Account(keys(name));

于 2015-04-12T19:17:42.117 に答える
0

応答なし?以下のように表を書き直すことにしました。

CREATE TABLE Account(
id uuid,
userRef uuid,
**main_name text,**
**other_name map<text, text>,**
dataStatus text,
dataVisibility text,
...
PRIMARY KEY( id, dataStatus, dataVisibility, userRef)
)
CREATE INDEX idx_xxx_account_name ON Account (main_name);

*_name は、電子メール、電話など、何でもかまいません。たとえば、main_name は必須で、other_name はオプションです。

とにかく、テキスト値のマップではなく、「テキスト」タイプとして main_name をインデックス化できるようになりました。

于 2013-01-03T12:08:40.650 に答える
0
create index idx_name on Account(ENTRIES(name))

これは、マップ内の特定のエントリを持つ行にアクセスするためのものです。

于 2016-02-01T15:03:31.247 に答える