Индексация карты коллекции Cassandra

У меня есть таблица Cassandra, один столбец которой выглядит так

 "ArticlesViewed" frozen<map<int, frozen<list<int>>>>

   and it contains data like 

       ArticlesViewed
       -----------------------------------------------
       {400: [9, 19, 11, 12], 545: [183, 44, 25, 16, 97]}
       {812: [2, 44, 41, 22], 376: [123, 14, 15, 16, 47]}
       {134: [9, 10, 11, 92], 111: [533, 14, 15, 16, 27]}

я хочу создать индекс в этом столбце, чтобы (не разрешать фильтрацию) в этом столбце, но он не позволяет мне это сделать

 cqlsh>CREATE INDEX ON user_profile("ArticlesViewed");

 [Invalid query] message="Cannot create values() index on frozen column ArticlesViewed.
 Frozen collections only support full() indexes"

  Also,i want to query on the <value>  {400: [9, 19, 11, 12],of the column like

 select "ArticlesViewed" from  user_profile where "ArticlesViewed" =19;

пожалуйста, предложите мне несколько способов сделать это .. любая помощь будет оценена


person s.s    schedule 30.10.2017    source источник


Ответы (1)


Вы не можете создать индекс для замороженного элемента коллекции

Вы должны создать полный индекс для замороженной коллекции

Создайте индекс для полной коллекции FROZEN. ПОЛНЫЙ индекс можно создать для набора, списка или столбца сопоставления таблицы, в которой нет существующего индекса.

Чтобы проиндексировать записи коллекции, вы используете ключевое слово FULL и имя коллекции во вложенных скобках.

Например :

CREATE INDEX on user_profile(full(articlesviewed));

Используя полный индекс, если вы хотите запросить просмотренные статьи, вы должны указать полное значение коллекции. Так как он заморожен.

Если у вас есть данные:

 userid | articlesviewed
--------+----------------------------------
      1 | {1: [1, 2, 3], 10: [10, 20, 30]}

Ваш запрос должен содержать полное значение просмотренных статей.

SELECT * FROM user_profile WHERE articlesviewed = {1: [1, 2, 3], 10: [10, 20, 30]};
person Ashraful Islam    schedule 30.10.2017
comment
спасибо, сработало создание полного индекса для замороженной коллекции, как мне запросить это ›› выберите ArticlesViewed из user_profile, где ArticlesViewed = 19; - person s.s; 30.10.2017
comment
@ss, вы не можете делать такие запросы, вам нужно изменить свою модель данных - person Ashraful Islam; 30.10.2017
comment
Если вы найдете ответ полезным, вы можете принять ответ, чтобы другой пользователь мог найти его полезным. - person Ashraful Islam; 31.10.2017
comment
спасибо, @Ashraful Islamic, я изменил модель данных. Можете ли вы помочь мне в решении этого вопроса - › stackoverflow.com/questions/47030798/ - person s.s; 31.10.2017