«Неверный запрос: часть PRIMARY KEY to_id не может быть ограничена» при попытке выбора с использованием условия where

Вот моя таблица cassandra для чата:

CREATE TABLE tax_keyspace_dev.chat_messages (
  message text,
  when timestamp,
  from_id text,
  to_id text,
  read boolean,
  participants text,
  PRIMARY KEY(participants, when, to_id)
);

Этот запрос работает:

select * from tax_keyspace_dev.chat_messages where participants='[email protected][email protected]' order by when;

но следующие запросы не работают:

select * from tax_keyspace_dev.chat_messages where to_id='[email protected]' order by when; 

Ошибка "Неверный запрос: часть PRIMARY KEY to_id не может быть ограничена (предыдущая часть не ограничена или не связана с EQ)"

update tax_keyspace_dev.chat_messages set read=true where participants = '[email protected][email protected]' and when = '2014-04-10 17:44:22+0530'; 

Ошибка "Неверный запрос: отсутствует обязательный элемент PRIMARY KEY to_id"

Если я удаляю «to_id» из составного ключа и создаю отдельный индекс следующим образом:

CREATE TABLE tax_keyspace_dev.chat_messages (
 message text,
 when timestamp,
 from_id text,
 to_id text,
 read boolean,
 participants text,
 PRIMARY KEY(participants, when)
);
CREATE INDEX idx_chat_messages_to ON tax_keyspace_dev.chat_messages (to_id);

тогда другие запросы работают, но этот отказывает:

select * from tax_keyspace_dev.chat_messages where to_id='[email protected]' order by when;

с ошибкойНеверный запрос: ORDER BY со вторыми индексами не поддерживается."

Как мне спроектировать таблицу так, чтобы все эти варианты использования работали?

select * from tax_keyspace_dev.chat_messages where participants='[email protected][email protected]' order by when;
update tax_keyspace_dev.chat_messages set read=true where participants = '[email protected][email protected]' and when = '2014-04-10 17:44:22+0530';
select * from tax_keyspace_dev.chat_messages where to_id='[email protected]' order by when;

Ответы на вопрос(1)

Ваш ответ на вопрос