使用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在地图键上创建索引呢?
答案 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来创建该类型的索引。