使用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在映射键上创建索引?
发布于 2016-02-19 06:37:58
Richard,cqlengine当前不支持索引映射键。如果您感兴趣,可以在此处找到创建运行的cql索引查询的代码。
https://github.com/datastax/python-driver/blob/master/cassandra/cqlengine/management.py#L197-L201
这是从将要执行的cql语句开始的。它将沿着行形成一个查询。
在keyspace.model_name_here ("map_name_here")上创建索引index_name_here。
默认情况下,这将为这些值建立索引。有一种方法可以使用keys前缀来索引具有纯cql的map的键。
该查询将类似于keyspace.model_name_here(KEYS(map_name_here));上CREATE INDEX index_name_here
你可以在这篇博客文章中阅读更多关于集合索引的内容。http://www.datastax.com/dev/blog/cql-in-2-1
不幸的是,cqlengine还不支持这个特性。您必须放入基本驱动程序并直接使用cql来创建该类型的索引。
https://stackoverflow.com/questions/35492165
复制相似问题