cassandra中复合键的二级索引

时间:2014-03-12 19:13:37

标签: go cassandra

我在cassandra中有这张表

CREATE TABLE global_product_highlights (
  deal_id text,
  product_id text,
  highlight_strength double,
  category_id text,
  creation_date timestamp,
  rank int,
  PRIMARY KEY (deal_id, product_id, highlight_strength)
)

当我在Golang中查询以下

err = session.Query("select product_id from global_product_highlights where category_id=? order by highlight_strength DESC",default_category).Scan(&prodId_array)

我得到ERROR:不支持带有第二个索引的ORDER BY。

我有category_id的索引。

我不完全理解如何在cassandra中对复合键应用二级索引。

感谢是否有人会解释和纠正这一点。

1 个答案:

答案 0 :(得分:1)

Cassandra中的ORDER BY子句仅适用于您的第一个聚类列(主键中的第二列),在本例中是您的product_id。 This DataStax doc声明:

  

查询复合主键和排序结果ORDER BY子句   只能选择一列。那一栏必须是第二栏   复合PRIMARY KEY中的列。

所以,如果你想让你的表按highlight_strength排序,那么你需要将该字段作为第一个聚类列。