📜  卡桑德拉MAP收集的二级索引

📅  最后修改于: 2021-08-24 04:41:21             🧑  作者: Mango

在本文中,我们将讨论Cassandra中MAP集合二级索引的概述,然后将执行该练习并了解其实际工作原理,最后将得出MAP集合二级索引的重要性。让我们一一讨论。

前提条件–

  • Apache Cassandra中索引的概念
  • Apache Cassandra中的收集数据类型

概述 :
在Cassandra中的MAP集合上创建二级索引非常有用。因此,在这里您将看到在集合上创建索引的实际用例,因为它使搜索和查询数据非常高效和快捷。因此,如果要基于关键字进行搜索,则在搜索和查询数据时,可以将CONTAINS KEY关键字用于MAP集合数据类型中的特定关键字。在MAP集合中,将存储键值对,并且我们将使用KEY来搜索数据。让我们借助示例来了解整个概念。

句法 :
在本文中,您将看到如何在集合上创建索引的语法部分。您可以按以下方式使用给定的以下命令。

CREATE INDEX ON (KEYS)

在这里,您将看到WHERE子句部分的语法,在这里您将使用CONTAINS关键字搜索MAP集合中的特定值。

WHERE  CONTAINS KEY 

例子 :
让我们考虑一下您已经存在的密钥空间,即cluster1,然后首先我们将通过使用CQL命令创建一个user_data表,如下所示。

步骤1:创建表-user_data –

use cluster1;
create table user_data
           (
           user_id varchar,
           user_first_name varchar,
           user_last_name varchar,
           company varchar,
           user_tags map,
           primary key(user_id)
           );

步骤2:在user_tags上创建索引–

CREATE INDEX ON user_data (KEYS(user_tags))

步骤3:插入数据–

insert into user_data(user_id, user_first_name, user_last_name, company, user_tags)
values('Ashish01','Ashish','Rana','abc',{'GFG':'Geeks for Geeks','HTML':'HyperText Markup Language'});

insert into user_data(user_id, user_first_name, user_last_name, company, user_tags)
values('Ashish02','Ayush','NA','abc',{'GFG':'Geeks for Geeks','IDK':'I Do not Know'});

insert into user_data(user_id, user_first_name, user_last_name, company, user_tags)  
values('Ashish03','Ayushi','NA','abc',{'FYI':'For Your Information','IDK':'I Do not Know'});

第4步:验证和读取数据–

select * from user_data;

步骤5:输出–

user_id company user_first_name user_last_name user_tags
Ashish03 abc Ayushi  NA {‘FYI’: ‘For Your Information’, ‘IDK’: ‘I Do not Know’}
Ashish02 abc Ayush  NA {‘GFG’: ‘Geeks for Geeks’, ‘IDK’: ‘I Do not Know’}
Ashish01 abc Ashish  Rana {‘GFG’: ‘Geeks for Geeks’, ‘HTML’: ‘HyperText Markup Language’}

步骤6:根据特定的关键字进行搜索–

select * from user_data where user_tags CONTAINS KEY 'GFG';

步骤7:输出–

user_id company user_first_name user_last_name user_tags
Ashish02 abc Ayush  NA {‘GFG‘: ‘Geeks for Geeks’, ‘IDK’: ‘I Do not Know’}
Ashish01 abc Ashish  Rana {‘GFG‘: ‘Geeks for Geeks’, ‘HTML’: ‘HyperText Markup Language’}