Cassandra Delete by Secondary Index or By Allowing Filtering

感情迁移 提交于 2019-12-18 12:19:20

问题


I’m trying to delete by a secondary index or column key in a table. I'm not concerned with performance as this will be an unusual query. Not sure if it’s possible? E.g.:

CREATE TABLE user_range (
  id int,
  name text,
  end int,
  start int,
  PRIMARY KEY (id, name)
)

cqlsh> select * from dat.user_range where id=774516966;

id        | name      | end | start
-----------+-----------+-----+-------
774516966 |   0 - 499 | 499 |     0
774516966 | 500 - 999 | 999 |   500

I can:

cqlsh> select * from dat.user_range where name='1000 - 1999' allow filtering;

id          | name        | end  | start
-------------+-------------+------+-------
 -285617516 | 1000 - 1999 | 1999 |  1000
 -175835205 | 1000 - 1999 | 1999 |  1000
-1314399347 | 1000 - 1999 | 1999 |  1000
-1618174196 | 1000 - 1999 | 1999 |  1000
Blah blah…

But I can’t delete:

cqlsh> delete from dat.user_range where name='1000 - 1999' allow filtering;
Bad Request: line 1:52 missing EOF at 'allow'
cqlsh> delete from dat.user_range where name='1000 - 1999';
Bad Request: Missing mandatory PRIMARY KEY part id

Even if I create an index:

cqlsh> create index on dat.user_range (start);
cqlsh> delete from dat.user_range where start=1000;
Bad Request: Non PRIMARY KEY start found in where clause

Is it possible to delete without first knowing the primary key?


回答1:


No, deleting by using a secondary index is not supported: CASSANDRA-5527




回答2:


When you have your secondary index you can select all rows from that index. When you have your rows you know the primary key and can then delete the rows.




回答3:


I came here looking for a solution to delete rows from cassandra column family. I ended up doing an INSERT and set a TTL (time to live) so that I don't have to worry about deleting it.

Putting it out there, might help someone.



来源:https://stackoverflow.com/questions/18515874/cassandra-delete-by-secondary-index-or-by-allowing-filtering

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!