Как использовать порядок по (сортировке) по вторичному индексу с использованием Cassandra DB - PullRequest
0 голосов
/ 29 сентября 2018

Моя схема таблицы:

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.

1 Ответ

0 голосов
/ 29 сентября 2018

Первый запрос работает правильно для меня, используя cassandra:latest, который теперь cassandra:3.11.3.Возможно, вы захотите перепроверить вставленные данные (или просто воссоздать заново, используя предоставленные вами операторы cql).

Второй дает вам достаточно информации - упорядочение по вторичным индексам невозможно в Cassandra.Возможно, вам придется отсортировать набор результатов в вашем приложении.

При этом я бы не рекомендовал бы запускать эту настройку в реальных приложениях.С некоторой дополнительной шкалой (когда у вас много записей) это будет самоубийством с точки зрения производительности.Я не должен вдаваться в подробности, так как, возможно, вы уже это понимаете, и SO не является сайтом вики / документации, так что вот ссылка .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...