Моя схема таблицы:
CREATE TABLE users
(user_id BIGINT PRIMARY KEY,
user_name text,
email_ text);
Я вставил строки ниже таблицы.
INSERT INTO users(user_id, email_, user_name)
VALUES(1, 'abc@test.com', 'ABC');
INSERT INTO users(user_id, email_, user_name)
VALUES(2, 'abc@test.com', 'ZYX ABC');
INSERT INTO users(user_id, email_, user_name)
VALUES(3, 'abc@test.com', 'Test ABC');
INSERT INTO users(user_id, email_, user_name)
VALUES(4, 'abc@test.com', 'C ABC');
Для поиска данных в столбце user_name
я создал индекс для использованияоператор LIKE
с '%%'
:
CREATE CUSTOM INDEX idx_users_user_name ON users (user_name)
USING 'org.apache.cassandra.index.sasi.SASIIndex'
WITH OPTIONS = {
'mode': 'CONTAINS',
'analyzer_class': 'org.apache.cassandra.index.sasi.analyzer.NonTokenizingAnalyzer',
'case_sensitive': 'false'};
Проблема: 1 Когда я выполняю ниже Query, он возвращает только 3 записи вместо 4.
select *
from users
where user_name like '%ABC%';
Проблема:2 Когда я использую приведенный ниже запрос, он выдает ошибку как
ERROR: com.datastax.driver.core.exceptions.InvalidQueryException:
ORDER BY with 2ndary indexes is not supported.
Query =select * from users where user_name like '%ABC%' ORDER BY user_name ASC;
Запрос:
select *
from users
where user_name like '%ABC%'
ORDER BY user_name ASC;
Мне необходимо отфильтровать user_name
с помощью order by user_name
.