关键字cassandra cqlengine映射列索引

时间:2016-02-18 20:50:49

标签: python cassandra cqlengine

使用Cassandra python驱动映射器cqlengine,在创建带有地图集合的模型时,似乎只能在地图上创建索引值

class Foo(Model):
    id = columns.UUID(partition_key=True)
    time_id = columns.UUID(primary_key=True, clustering_order='DESC')
    bar = columns.Map(columns.Ascii(), columns.Double(), index=True)

会产生类似

的表格
cqlsh:baz> DESCRIBE foo;
    CREATE TABLE bar.asset_metric (
        id uuid,
        time_id timeuuid,
        bar map<ascii, double>,
        PRIMARY KEY (id, time_id)
    ) WITH CLUSTERING ORDER BY (time_id DESC)
CREATE INDEX index_foo_bar ON baz.foo (values(bar));

如何让cqlengine在地图键上创建索引呢?

1 个答案:

答案 0 :(得分:1)

理查德 目前,cqlengine不支持索引映射键。如果您感兴趣,那么创建运行的cql索引查询的代码位于此处。

https://github.com/datastax/python-driver/blob/master/cassandra/cqlengine/management.py#L197-L201

这将从将要执行的cql语句开始。 它将按照行进行查询。

CREATE INDEX index_name_here ON keyspace.model_name_here(&#34; map_name_here&#34;)。

默认情况下,这将索引值。有一种方法可以使用KEYS前缀用纯cql索引映射的键。

该查询看起来像这样 CREATE INDEX index_name_here ON keyspace.model_name_here(KEYS(map_name_here));

您可以在此博文中阅读有关集合索引的更多信息。 http://www.datastax.com/dev/blog/cql-in-2-1

不幸的是,cqlengine还没有支持这个功能。您将不得不放入基本驱动程序并直接使用cql来创建该类型的索引。