Получение ошибки при чтении данных из кластера DSE с помощью Stargate API
Из-за некоторых технических проблем с использованием cassandra с Talend мы используем stargate api для чтения и записи данных в DSE Cassandra. Я должен был сказать, что я совершенно новичок в мире cassandra или даже NoSql.
У меня есть несколько полей: status(текст), status_code(текст) и попыткеp_count(int). Теперь мне нужно прочитать данные из Кассандры с условием ниже.
состояние:
status!='PROCESSED' and status_code!=400 and attemp_count<8
Вот как выглядит мой дизайн стола.
И ниже я получаю ошибку.
Столбец status_code имеет индекс, но не поддерживает операторы, указанные в запросе. Если вы хотите выполнить этот запрос, несмотря на непредсказуемость производительности, используйте РАЗРЕШИТЬ ФИЛЬТРАЦИЮ
{
"description": **"Bad request: org.apache.cassandra.stargate.exceptions.InvalidRequestException:** Column 'status_code' has an index but does not support the operators specified in the query. If you want to execute this query despite the performance unpredictability, use ALLOW FILTERING",
"code": 400
}
Запрос, который я использую для простого теста:
{{url}}/v2/keyspaces/dco/mc_inbound_log?where={"status_code":{"$gt":"201"}}
2 ответа
Дветтлауфер действительно прав, говоря, что это проблема моделирования данных. Базовый запрос CQL недействителен, поэтому Stargate.io не сможет его запустить.
Вы фильтруете столбцы, которые (1) не являются частью первичного ключа и (2) не индексируются. Это причина, по которой (3)
У вас есть вариант использования аналитики, поэтому подумайте об использовании Spark или Solr. Ваше здоровье!
Вы можете попробовать использовать status! = 'PROCESSED' и status_code! = '400' и tryp_count<8
Поскольку status_code - это строка, вам понадобятся кавычки.