Непосредственным ответом на ваш вопрос будет создание вторичного индекса для столбца eventtype
, например:
CREATE INDEX my_index ON events.loginevents (eventtype);
Затем вы можете выполнить фильтрацию по этому конкретному столбцу:
SELECT * FROM loginevents WHERE eventtype='LoginSuccess';
Однако это решение может негативно повлиять на производительность вашего кластера.
Если вы пришли из мира SQL и не знакомы с Cassandra, прочитайте введение по моделированию Cassandra, например this .
Прежде всего нужно определить запрос, а затем создать таблицу в соответствии с.
В Cassandra данные распределяются в кластере в соответствии с ключом раздела, поэтому чтение записей, принадлежащиходин и тот же раздел работает очень быстро.
В вашем случае, возможно, хорошим началом будет группировка ваших записей на основе eventtype
:
CREATE TABLE events.loginevents (
id uuid,
date timestamp,
eventtype text,
log text,
password text,
priority int,
sessionid text,
sourceip text,
user text,
useragent text,
PRIMARY KEY (eventtype, id)
)
Затем вы можете выбрать вот так:
SELECT * FROM loginevents WHERE eventtype='LoginSuccess';
или даже:
SELECT * FROM loginevents WHERE eventtype in ('LoginSuccess', 'LoginFailure');
(Это не идеальная модель, ее обязательно нужно улучшить перед производством.)