首页 文章

Cassandra忽略UPDATE CQL语句中的索引

提问于
浏览
1

我创建了一个CF,之后在列上添加了一个二级索引 . 在我添加二级索引之后(如下所述:http://www.datastax.com/docs/1.1/ddl/indexes)我希望UPDATE语句能够使用WHERE子句中的二级索引列 . 可悲的是,他们没有 .

  • 创建了表模式:

CREATE TABLE注册表(referencesetid uuid,referenceid uuid,acquiredbyendpoint uuid,name text,PRIMARY KEY(referencesetid,referenceid))

  • 添加了索引:

CREATE INDEX nameidx ON注册表(名称);

  • 插入一行:

INSERT INTO注册表(referenceSetId,referenceId,acquiredByEndpoint,name)VALUES(96ade698-09c5-46f0-beb4-b842e5352bc8,a97c6163-f4bc-4eaf-a7e0-700578bdc44c,00000000-0000-0000-0000-000000000000,'John');

  • 执行更新查询(在WHERE子句中,我指的是nameidx,因为这是索引字段'name'的名称):

UPDATE注册表SET acquirebyendpoint = 00000000-0000-0000-0000-000000000001 WHERE nameidx ='John'AND referencesetid = 36da89c3-f256-4d56-83c0-37569311a8a0;

  • 错误:

错误请求:未知密钥标识符nameidx

有没有人有任何建议我做错了什么?

它可能不太明显(即配置文件或C *版本),因为C *索引文档在我看来很简单 .

干杯保罗 .

1 回答

  • 4

    正如您在顶部所说,Cassandra不支持UPDATE,WHERE子句中的字段是索引字段 . 您只能使用主键字段进行更新 .

    此外,该字段仍称为名称,索引名称不用于索引查找 .

相关问题