我正在使用cassandra 2.1和最新的CQL。ORDER BY with 2ndary indexes is not supported
這裏是我的表&指標:
CREATE TABLE mydata.chats_new (
id bigint,
adid bigint,
fromdemail text,
fromemail text,
fromjid text,
messagebody text,
messagedatetime text,
messageid text,
messagetype text,
todemail text,
toemail text,
tojid text,
PRIMARY KEY(messageid,messagedatetime)
);
CREATE INDEX user_fromJid ON mydata.chats_new (fromjid);
CREATE INDEX user_toJid ON mydata.chats_new (tojid);
CREATE INDEX user_adid ON mydata.chats_new (adid);
當我執行此查詢:
select * from chats_new WHERE fromjid='test' AND toJid='test1' ORDER BY messagedatetime DESC;
我得到這個錯誤:
code=2200 [Invalid query] message="ORDER BY with 2ndary indexes is not supported."
那麼我們應該如何獲取這些數據?
二級索引無意讓您以4種不同的方式查詢同一個表。你*應該*做的是建立3個額外的查詢表(chats_new_by_fromjid,chats_new_by_tojid,chats_new_by_adid)並且鍵入這些表來支持你想要的查詢。 – Aaron 2014-09-18 19:26:58
@ BryceAtNetwork23好的,但在這種情況下,'messagedatetime'是聚類鍵(對吧?),所以Cassandra應該可以'訂購'它。 – Raedwald 2014-09-19 12:05:49
@Rededwald是的,集羣鍵仍然生效。但作爲輔助索引查詢從多個分區中取回數據,它可能會或可能不會以排序的順序返回(這就是爲什麼'ORDER BY'不允許在二級索引查詢上)。 – Aaron 2014-09-19 13:23:39