Здесь есть 2 аспекта:
- Самый простой - построение самого запроса - это можно сделать, просто конкатенируя строки, или используя QueryBuilder , как обсуждалось в первом вопросе.
- Самый сложный - как выполняется запрос. В Cassandra требуется, чтобы вы указали ключ раздела (как минимум) при выполнении запроса. В противном случае вы выполните полное сканирование таблицы, которое, скорее всего, закончится тайм-аутом чтения.
Чтобы смягчить вторую проблему, люди делают денормализацию и создают вспомогательные таблицы, где конкретное поле является ключом раздела. Но это не может быть сделано автоматически, поскольку вы можете закончить с очень искаженным распределением данных для определенных таблиц. Вторичные индексы также имеют ограничения и лучше всего работают с ключом раздела.
P.S. В DataStax Enterprise это можно немного ослабить, добавив в таблицу индекс DSE Search , но производительность будет несколько хуже, чем у чистой Кассандры.